簡體   English   中英

在JavaScript中也將帶小數的浮點型解析為JSON的1.00也為1.00

[英]Parse float with decimals to JSON in JavaScript also for 1 as 1.00

情況:我的傳感器測量數據,該數據由NodeRED函數處理,然后解析為JSON對象。 NodeRED函數使我可以編寫JavaScript代碼。 JSON對象被發送到用C ++編寫的接收模塊,該接收模塊可通過JSON_spirit庫在JSON上運行。 我無法更改接收模塊。

問題:接收方應用程序嘗試使用value.get_float()函數value.get_float()一個值。 傳感器有時會精確測量1.00。 它將作為{"value":1}傳遞到JSON。 接收模塊以錯誤終止:

terminate called after throwing an instance of 'std::runtime_error'
what():  get_value< real > called on integer Value

顯然,函數value.get_float()似乎無法將1更改為1.0,並且如上所述,我無法更改所使用的函數。 因此,我需要找到一種將{"value":1.00}解析為JSON的方法。

我嘗試過的事情我在NodeRED函數value.toFixed(2)嘗試過,但這將返回字符串{"value":"1.00"} 因此,我嘗試像這樣再次將字符串解析為浮點型

value.toFixed(2);
value = parseFloat(value);

但這將導致1.00再次返回到這樣的JSON: {"value":1} 我也嘗試過一些四舍五入的技巧,但是JavaScript可以省略不必要的小數,就可以了。 因此,我尚未找到解決方案。

任何想法都歡迎。

PS:這是我第一次有StackOverflow問題,所以請不要對我太苛刻:)


編輯:我發現以下解決方法。 我使用value.toFixed(2); 在第一注中獲得{"value":"1.00"} 稍后,我在NodeRED的change-Node中的字符串上使用正則表達式。 正則表達式:

"Value":\"(\d+\.\d{2})\"

用。。。來代替:

"Value":$1

我的實際案例比示例要復雜一些,因此正則表達式要更長一些。 但是regex101發揮了很大作用。

認為這篇文章已經存在: 使用JSON.stringify時強制浮點值

所以我認為在Javascript中1和1.0之間沒有區別

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM