Rak*_*mar 6 javascript math decimal
我有两个负值-0.245和-9.085.我想让它们到2位小数.我正在使用JavaScript函数toFixed()但得到一些奇怪的结果.
请帮我理解第一个例子背后的逻辑是"向下",但第二个是"向上"四舍五入
//Examples 1. result coming as expected
var num = -0.245
var n = num.toFixed(2); //-0.24
console.log(n);
//Examples 2. result should be -9.08
num = -9.085
n = num.toFixed(2); //-9.09
console.log(n);Run Code Online (Sandbox Code Playgroud)
根据https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed中的描述 提及:
如果需要,该数字将被舍入,并且如果需要,小数部分将用零填充,以使其具有指定的长度。
对于-0.245.toFixed(2),该值为负数,小数点后2位为-0.045,-0.045高于-0.05,所以结果向上舍入为-0.24
对于-9.085.toFixed(2),该值为负数,小数点后2位为-0.085,-0.085低于-0.08,所以结果向下舍入为-9.09
下面是始终将负值四舍五入到小数点后两位的解决方案。
var num = -9.085
var output = num < 0 ? Math.floor(Math.abs(num) * 100) * -1 / 100 : num.toFixed(2)
console.log(output) //-9.08Run Code Online (Sandbox Code Playgroud)
请检查,这有助于您理解其背后的逻辑: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed