JavaScript:
数字取整
如何操作:
以下是在JavaScript中使用Math.round()
、Math.ceil()
和Math.floor()
进行数字舍入的方法:
let originalNumber = 2.567;
let roundedDown = Math.floor(originalNumber); // 2
let roundedUp = Math.ceil(originalNumber); // 3
let rounded = Math.round(originalNumber); // 3(因为.567大于.5)
console.log(roundedDown); // 打印:2
console.log(roundedUp); // 打印:3
console.log(rounded); // 打印:3
要固定到特定的小数位数,请使用toFixed()
:
let twoDecimals = originalNumber.toFixed(2); // "2.57" (返回一个字符串)
console.log(twoDecimals); // 打印:"2.57"
使用一元加号或Number()
将字符串重新转换为数字:
let numberAgain = +twoDecimals; // 2.57
console.log(numberAgain); // 打印:2.57
深入探讨
数字舍入并不是什么新鲜事;它和数字一样古老。在JavaScript中,Math.round()
使用“四舍五入”规则:如果小数部分是0.5,就舍入到最近的偶数。
想要更多控制力,toFixed()
可能是你的首选,但记住,它返回一个字符串。重新转换回数字可能是一个额外的步骤,但确保你继续使用数字类型工作。
有其他选择吗?像lodash
这样的库提供了_.round(number, [precision=0])
,用于更细致的控制。或者,较新的Intl.NumberFormat
提供了远超舍入的高精度格式化。
说到精度,要小心JavaScript中浮点数的怪癖。0.1 + 0.2
并不严格等于0.3
,这是因为数字的存储方式。有时,舍入变得必要,以纠正这种浮点数错误。
另请参阅
- Mozilla的数学文档:MDN Web文档
- 使用
Intl.NumberFormat
进行财务舍入:ECMAScript国际化API lodash
舍入:Lodash文档