我想在JSON.stringify()之后强制 Number 成为 Float 。不幸的是,JSON.stringify()删除了1 .0 。
示例:
JSON.stringify(1.0) // "1"
通缉结果:
JSON.stringify(1.0) // "1.0"
我正在使用一个想要JSON格式的对象的API,但它只能理解十进制值。所以我想询问是否可以使用JSON.stringify生成带小数值的字符串而不使用Regex-.replace-magic
答案 0 :(得分:3)
使用 toFixed 而不是stringify。例如:
var num = 1;
var numStr = num.toFixed(1); //result is "1.0"
有关 toFixed 的更多信息 - http://www.w3schools.com/jsref/jsref_tofixed.asp。
要清楚我们正在谈论转换数字到字符串而不是数字浮动(这种类型不存在于javascript),可以从问题描述中理解。 toFixed
将始终返回具有指定小数位数的String。
答案 1 :(得分:3)
对您的问题的直接且相当简短的回答是否,您无法使用JSON.stringify自定义数值的序列化。见JSON.stringify() on MDN。
如果你的整数确实需要小数,你必须使用" regex-magic"正如您在问题中提到的那样,或找到一个允许您执行此类技巧的库。如果您不处理过于复杂或多种不同类型的对象,您可以手动对它们进行字符串化。
作为旁注,对于需要使用自定义格式化JSON的API,听起来非常非常可疑。我会三重检查是否有其他方法可以使用它。
答案 2 :(得分:1)
1和1.0在Javascript中是相同的。如果对一个浮点数进行字符串化,该浮点数不仅仅是一个尾随零,它将正确保留该值:
JSON.stringify(1.5) // "1.5"