本文详细解析JavaScript中处理数据保留小数的两种常用方法:toFixed与Math.round。重点指出toFixed采用银行家舍入法(四舍六入五取偶),而Math.round遵循传统数学四舍五入规则。通过具体代码示例对比两者在正负数及边界值处理上的差异,帮助开发者根据业务需求选择合适的数据处理方式,避免精度计算误差。
toFixed方法详解
1、toFixed方法
toFixed() 方法用于将 Number 类型数值四舍五入为指定的小数位数。例如,若需将数据 Num 保留 2 位小数,可调用 toFixed(Num)。需要注意的是,其舍入规则与常规数学规则不同,采用的是银行家舍入法(Banker's Rounding),即“四舍六入五取偶”规则。
具体规则简述为:四舍六入五考虑,五后非零则进一;五后为零看奇偶,五前为偶应舍去,五前为奇要进一。
显然,这种规则与日常数据处理习惯不符。为解决此问题,可自定义使用 Math.round 方法来实现符合常规数学逻辑的指定小数位处理。
定义和用法
toFixed() 方法可将 Number 四舍五入为指定小数位数的数字。
语法:NumberObject.toFixed(num)
| 参数 | 描述 |
|---|---|
| num | 必需。规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替。 |
返回值
返回 NumberObject 的字符串表示,不使用指数计数法,小数点后固定有 num 位数字。必要时会对数字进行舍入,并用 0 补足至指定长度。若 num 大于 21,该方法仅调用 NumberObject.toString(),返回采用指数计数法表示的字符串。
抛出异常
当 num 过小或过大时抛出 RangeError 异常。0 到 20 之间的值不会引发该异常。部分实现支持更大或更小的数值范围。
当调用该方法的对象不是 Number 类型时,抛出 TypeError 异常。
实例
本例演示如何将数字舍入为仅保留一位小数:
Show the number 13.37 with one decimal:
<script type="text/javascript">
var num = new Number(13.37);
document.write (num.toFixed(1))
</script>
输出:
13.4
Math.round方法详解
2、Math.round方法
round() 方法用于将数字舍入为最接近的整数。例如:Math.round(x) 将 x 舍入为最接近的整数。其取舍方法遵循传统数学中的四舍五入规则,符合常规数学逻辑。虽然对小数处理不如toFixed便捷,但可根据不同需求进行自定义处理。
例如:对 X 保留两位小数,可使用 Math.round(X * 100) / 100 进行处理。
定义和用法
round() 方法可将数字舍入为最接近的整数。
语法:Math.round(x) 参数描述: x 必需。必须是数字。 返回值:与 x 最接近的整数。
说明:对于 0.5,该方法将进行上舍入。
例如,3.5 将舍入为 4,而 -3.5 将舍入为 -3。
实例:将不同数字舍入为最接近的整数:
<script type="text/javascript">
document.write(Math.round(0.60) + "<br />")
document.write(Math.round(0.50) + "<br />")
document.write(Math.round(0.49) + "<br />")
document.write(Math.round(-4.40) + "<br />")
document.write(Math.round(-4.60))
</script>
输出:
1 1 0 -4 -5
以上关于JS处理数据四舍五入(toFixed与round的区别)的内容即为小编分享的全部,希望能提供参考,也希望大家多多支持本站。