我是不是遗漏了什么?
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等,所以它必须是一个字符串。
其他回答
因为它的主要用途是显示数字?如果要对数字进行四舍五入,请使用带有适当因子的Math.round()。
当它格式化一个数字时,你期望它返回什么?如果你有一个数字,你几乎不能对它做任何事情,因为例如2 == 2.0 == 2.00等,所以它必须是一个字符串。
可能来不及回答,但您可以将输出与1相乘以再次转换为数字,这里是一个例子。
Const x1 = 1211.1212121; const x2 = x1.toFixed(2)*1; console.log (typeof (x2));
下面是m93a提供的答案的一个稍微更实用的版本。
const toFixedNumber = (toFixTo = 2, base = 10) => num => {
const pow = Math.pow(base, toFixTo)
return +(Math.round(num * pow) / pow)
}
const oneNumber = 10.12323223
const result1 = toFixedNumber(2)(oneNumber) // 10.12
const result2 = toFixedNumber(3)(oneNumber) // 10.123
// or using pipeline-operator
const result3 = oneNumber |> toFixedNumber(2) // 10.12
您可以简单地使用“+”将结果转换为数字。
var x = 22.032423;
x = +x.toFixed(2); // x = 22.03