使用JSON.stringify时强制浮点值

时间:2016-12-30 16:24:23

标签: javascript typescript

我想在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

3 个答案:

答案 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"