Javascript JSON字符串化浮点到int的转换

Javascript JSON字符串化浮点到int的转换,javascript,json,node.js,Javascript,Json,Node.js,我正在使用Node.js和内置JSON对象对JSON对象进行字符串化。在对象中是 { weight : 1.0 } 但是,当我字符串化并写入文件时,输出为weight:1 实际上你的不是问题,1==1.0==1.00在Javascript中,如果你有一个类似1.55的浮点值,那么stringify会给你同样的1.55而不是1。。即使这样,如果希望写入1.0,也可以将值更改为字符串 我的意思是用双引号括起这个值 { weight : "1.0" } 如对类似问题的回答中所述

我正在使用Node.js和内置JSON对象对JSON对象进行字符串化。在对象中是

{ 
    weight : 1.0
}

但是,当我字符串化并写入文件时,输出为weight:1

实际上你的不是问题,
1==1.0==1.00
在Javascript中,如果你有一个类似
1.55
的浮点值,那么stringify会给你同样的
1.55而不是1
。。即使这样,如果希望写入
1.0
,也可以将值更改为字符串

我的意思是用双引号括起这个值

{ 
    weight : "1.0"
}
如对类似问题的回答中所述,以及关于:

JavaScript中没有整数这样的东西。JavaScript中的数字是“双精度64位格式IEEE 754值”


打开web浏览器的控制台并键入
1.0
。您将看到打印出来的
1
。JavaScript中的所有数字都是浮点数,因此您的序列化程序只是选择省去不必要的精度。

不确定问题出在哪里
1
1.0
在JavaScript中是相同的。使用
parseInt(obj.weight)
尝试使用1.5,您会发现它实际上保留了小数。注释是生成的文件被用作另一个无法将整数解析为双精度的系统(Java)的输入。因此,输出格式要求为1。0@kyleED在Java工具中读取之前将其解析为一个float,但是当我编写时,
JSON.stringify(0.1)
,为什么它打印
0.1
,而不是
0.10000000000000555115123125782702118158340451015625
?它省略了必要的精度,即数字不能表示为64位浮点数。一般来说,浮点数不善于表示不易用3.14159格式书写的数字…*2^n其中,“…”表示几个数字,而n不是很大。如果JSON文件用于以不同语言编写的代码(区分“1.0”和“1”),这仍然是一个问题。实际上,这可能是一个问题。例如,我们有一个json模式生成器,它使用来自javascript客户端的数据。问题是,对于1.0,generator会创建类型“number”,但对于1,它会创建“integer”。然后,当数据更改(例如更改为1.2)时,您将根据整数验证1.2,但失败。