[英]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.