gpt4 book ai didi

javascript - 在 JavaScript 中将带小数的 float 解析为 JSON,也将 1 解析为 1.00

转载 作者:行者123 更新时间:2023-11-30 06:21:08 25 4
gpt4 key购买 nike

情况:我的传感器测量数据,我在 NodeRED 函数中处理这些数据,然后解析为 JSON 对象。 NodeRED 函数允许我编写 JavaScript 代码。 JSON 对象被发送到一个用 C++ 编写的接收模块,该模块使用 JSON_spirit 库处理 JSON。我无法更改接收模块。

问题:接收应用程序尝试使用函数 value.get_float() 获取 JSOn 的一个值。传感器有时会精确测量 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"}。所以,我尝试像这样再次将字符串解析为 float

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

但这会导致 1.00 再次变成这样的 JSON:{"value":1}。我也尝试了一些舍入技巧,但只要 JavaScript 可以省略不必要的小数,它就会这样做。所以,我还没有找到解决方案。

欢迎提出任何想法。

P.S.:这是我第一次在 StackOverflow 提问所以请不要对我太苛刻 :)


编辑:我发现了以下解决方法。我在第一个注释中使用 value.toFixed(2); 来获取 {"value":"1.00"}。稍后,我在 NodeRED 的 change-Node 中对字符串使用正则表达式。正则表达式:

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

替换为:

"Value":$1

我的真实案例比示例复杂一点,所以正则表达式有点长。但是regex101帮助很大。

最佳答案

认为这篇文章已经存在: Force float value when using JSON.stringify

所以我认为在 Javascript 中 1 和 1.0 之间没有区别

关于javascript - 在 JavaScript 中将带小数的 float 解析为 JSON,也将 1 解析为 1.00,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53005702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com