我是不是遗漏了什么?
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()返回一个字符串?
我想把这个数四舍五入到两位十进制数字。
当前回答
当它格式化一个数字时,你期望它返回什么?如果你有一个数字,你几乎不能对它做任何事情,因为例如2 == 2.0 == 2.00等,所以它必须是一个字符串。
其他回答
您可以简单地使用“+”将结果转换为数字。
var x = 22.032423;
x = +x.toFixed(2); // x = 22.03
我通过使用JavaScript的number()函数将其转换回数字来解决这个问题
var x = 2.2873424;
x = Number(x.toFixed(2));
它返回一个字符串,因为0.1及其幂(用于显示十进制分数)在二进制浮点系统中不可表示(至少不能完全准确地表示)。
例如,0.1实际上是0.1000000000000000055511151231257827021181583404541015625,0.01实际上是0.01000000000000000020816681711721685132943093776702880859375。(感谢BigDecimal证明了我的观点。: - p)
因此(在没有小数浮点数或有理数类型的情况下),将其作为字符串输出是使其精确到显示所需精度的唯一方法。
当然它会返回一个字符串。如果要对数值变量进行四舍五入,则应该使用Math.round()。toFixed的目的是用固定的小数位数格式化数字,以便显示给用户。
你应该像下面这样使用它。
var someNumber: number = 0.000000;
someNumber = Number(someNumber.toFixed(2))