我是不是遗漏了什么?
var someNumber = 123.456;
someNumber = someNumber.toFixed(2);
alert(typeof(someNumber));
//alerts string
为什么.toFixed()返回一个字符串?
我想把这个数四舍五入到两位十进制数字。
我是不是遗漏了什么?
var someNumber = 123.456;
someNumber = someNumber.toFixed(2);
alert(typeof(someNumber));
//alerts string
为什么.toFixed()返回一个字符串?
我想把这个数四舍五入到两位十进制数字。
当前回答
为什么不使用parseFloat呢?
var someNumber = 123.456;
someNumber = parseFloat(someNumber.toFixed(2));
alert(typeof(someNumber));
//alerts number
其他回答
因为它的主要用途是显示数字?如果要对数字进行四舍五入,请使用带有适当因子的Math.round()。
可能来不及回答,但您可以将输出与1相乘以再次转换为数字,这里是一个例子。
Const x1 = 1211.1212121; const x2 = x1.toFixed(2)*1; console.log (typeof (x2));
我通过修改这个来解决这个问题:
someNumber = someNumber.toFixed(2)
...:
someNumber = +someNumber.toFixed(2);
然而,这会将数字转换为字符串并再次解析它,这将对性能产生重大影响。如果您关心性能或类型安全,也请检查其他答案。
你应该像下面这样使用它。
var someNumber: number = 0.000000;
someNumber = Number(someNumber.toFixed(2))
您可以简单地使用“+”将结果转换为数字。
var x = 22.032423;
x = +x.toFixed(2); // x = 22.03