JavaScript,数字舍入问题
javascript, issue with number rounding
我知道javascript可能会有除法的舍入问题,但乘法则不然。你如何解决这些问题?
var p = $('input[name="productsUS"]').val().replace(",", ".");
var t = $('input[name="productsWorld"]').val().replace(",", ".");
if (p >= 0 && t >= 1) {
var r = p / t;
r = Math.round(r * 10000) / 10000;
var aff = (r * 100) + "%";
如果p = 100
和t = 57674
r = 0.0017
(正常)和aff = 0.16999999999999998%
(参数)
如何获得aff = 0.17
?
("0.16999999999999998").tofixed(2)
给你0.17
。
var aff = (r * 100).toFixed(2) + "%";
现场演示
toFixed
在 MDN 上
如果要aff
保留数字而不是转换为字符串,则可以使用 toFixed
来解决精度问题,然后使用一元运算符将其"转换"回数字+
如下所示:
var n = 0.16999999999999998;
n = +n.toFixed(10); // 0.17
您可能希望使用比小数点后 2 位更高的精度以避免舍入问题,我在这里使用了 10。
这是JavaScript中的一个错误(尽管它也影响其他一些语言,例如Python),因为它存储非整数的方式有点错误(二进制!)。解决它的唯一方法是将其四舍五入到小数点后两位。
相关文章:
- 浮点0.2+0.1舍入误差
- 谷歌材料图表:停止工具提示舍入
- jQuery - 带有一些数字的表格计算出现奇怪的舍入错误
- 有人可以详细解释这个 JavaScript 十进制舍入函数吗?
- 求和值时出现Javascript舍入问题
- 在追加文本中舍入数字输出
- Infrastics网络货币编辑舍入问题
- 柔性滑块问题淡入淡出效果
- 是否可以在 JavaScript 中实现没有舍入问题的任意精度算术
- JavaScript 中的舍入问题
- Javascript中的舍入问题
- 在 JavaScript 中向上舍入数字有问题
- JavaScript,数字舍入问题
- 修复CSS流体网格中的子像素舍入问题
- jQuery问题中的舍入数字
- 解析浮点数有舍入限制?我怎样才能解决这个问题
- 淘汰赛中的十进制值舍入问题
- Javascript:需要解决自动舍入的问题
- Javascript浮点问题-舍入问题
- 移动webkit浏览器在JS中有舍入问题吗?