将负值舍入到2位小数

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)

alp*_*pha 5

根据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.08
Run Code Online (Sandbox Code Playgroud)


Aja*_*kur 0

请检查,这有助于您理解其背后的逻辑: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed

  • 请不要只发布链接。我已经看过该网站,但它没有解释问题 (2认同)