让我举个例子。
var a = 2.0;
var stringA = "" + a;
我会得到:stringA = "2"
,但我想:stringA = "2.0"
。
我不想失去精确度,所以如果:
var b = 2.412;
var stringB = "" + b;
我想获得标准:stringB = "2.412"
。
这就是toFixed()
在这里工作的原因。有没有其他方法可以做到这一点,而不是明确检查这样的整数?:
if (a % 1 === 0)
return "" + a + ".0";
else
return "" + a;
答案 0 :(得分:12)
这有一个内置功能。</ p>
var a = 2;
var b = a.toFixed(1);
这会将数字四舍五入到一位小数,并将其显示为小数点后一位,即使它为零。
答案 1 :(得分:4)
如果要将.0
附加到Number to String转换的输出并保持非整数的精度,只需测试一个整数并特别处理它。
function toNumberString(num) {
if (Number.isInteger(num)) {
return num + ".0"
} else {
return num.toString();
}
}
Input Output
3 "3.0"
3.4567 "3.4567"
答案 2 :(得分:3)
如果你的浮动是
var a = 2.0;
var b = (a % 1 == 0) ? a + ".0" : a.toString();
编辑:添加引用并更改为允许.0 http://www.w3schools.com/jsref/jsref_tostring_number.asp
答案 3 :(得分:0)
对于其他人来看这个问题,我刚想到,要将一个浮点数转换为一个至少有n
个小数位的字符串,可以写一下:
function toAtLeastNDecimalPlaces(num, n) {
normal_conv = num.toString();
fixed_conv = num.toFixed(n);
return (fixed_conv.length > normal_conv.length ? fixed_conv : normal_conv);
}
请注意,根据https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed,toFixed()
最多可以使用20个小数位。因此,上述功能不适用于n > 20
。
此外,上述功能对科学记数法没有任何特殊处理(但在此主题中也没有任何其他答案)。
答案 4 :(得分:0)
这个解决方案试图平衡简洁性和可读性
const floatString = (n) => Number.isInteger(n) ? n.toFixed(1) : n.toString();