我是不是遗漏了什么?

var someNumber = 123.456;
someNumber = someNumber.toFixed(2);
alert(typeof(someNumber));
//alerts string

为什么.toFixed()返回一个字符串?

我想把这个数四舍五入到两位十进制数字。


当前回答

提供一个为什么它必须是字符串的例子:

如果你格式化1.toFixed(2),你会得到'1.00'。

这和1不一样,因为1没有两个小数。


我知道JavaScript并不是一种精确的性能语言,但如果你使用以下内容,你可能会获得更好的性能: roundedValue =数学。整数(值* 100)* 0.01

其他回答

您可以简单地使用“+”将结果转换为数字。

var x = 22.032423;
x = +x.toFixed(2); // x = 22.03

你应该像下面这样使用它。

var someNumber: number = 0.000000;
someNumber = Number(someNumber.toFixed(2))

为什么不将结果乘以1,即

someNumber.toFixed(2) * 1

我通过修改这个来解决这个问题:

someNumber = someNumber.toFixed(2)

...:

someNumber = +someNumber.toFixed(2);

然而,这会将数字转换为字符串并再次解析它,这将对性能产生重大影响。如果您关心性能或类型安全,也请检查其他答案。

我通过使用JavaScript的number()函数将其转换回数字来解决这个问题

var x = 2.2873424;
x = Number(x.toFixed(2));