javascript - 在 Javascript 中将数字 0.005 向下舍入
问题描述
有没有办法将数字 0.005 向下舍入。
例如:
5.425
是要四舍五入到5.42
2.336
是要四舍五入到2.34
0.5556
是要四舍五入到0.56
更新:在点之后我并不总是有 3 位数字,我可以拥有更多。像5.555556
, 12.3456789
, 等等
已经尝试过,parseFloat(number).toFixed(2)
但在某些情况下它并没有真正起作用,像0.555
输出这样的值将0.56
代替0.55
提前致谢
解决方案
问题是,JavaScript 不知道5.425
. 计算机的浮点实现以及大多数编程语言的浮点实现都是基于二进制的,而不是基于十进制的(参见 IEEE 754)。因此,每个扫描的数字首先四舍五入到最接近的可能值:
5.425 .toPrecision(18); // result "5.42499999999999982" => ToFixed(2)="5.42"
2.336 .toPrecision(18); // result "2.33599999999999985" => ToFixed(2)="2.34"
0.5556 .toPrecision(18); // result "0.555599999999999983" => ToFixed(2)="0.56"
并将这些扫描结果用于进一步处理。所以使用的结果toFixed(2)
是预期的并且绝对正确。
并且不要相信其他解决方案(有时称为betterToFixed()
)来解决此问题。他们对其他数字有疑问,因为许多作者不了解幕后的数学。
推荐阅读
- javascript - “材料表” - 如何在每页添加更多行并修复渲染 - ReactJs
- google-earth-engine - 如何让 ee.Reducer.mean() 给我一个浮点数而不是二进制数?
- javascript - 如何将值从函数插入到变量javascript
- python - 在不干扰原始图像的情况下将灰色背景转换为白色背景
- oracle - 如何在触发器(Oracle)的帮助下将现有记录从父表移动到新创建的子表?
- flutter - Flutter 设计波二次BezierTo
- wso2 - 如何在 WSO2 中使用 JSON/XSD 验证器验证多种方法
- javascript - 事件处理程序中的警报更改其行为
- angular - 访问组件模板中的指令变量
- javascript - JMeter - 将值作为字符串传递