请问js如何保证数字计算的正确?

图片描述

我又两个文本框 可以填支付比例与支付金额,两个都可以填,并且改了其中一个,另外一个也会有相应变化。现在我做如下处理:
1、现将支付金额改为58.5 ,那个支付比例会变为:40.63 (都只保留两位小数) 保存一次
那么还剩下支付比例:59.38 ; 支付金额58.50.
2、我将支付比例还是输入59.38,支付比例会变为58.51.因为用了四舍五入。 我是这样算的:
支付比例 / 100 * 总金额
59.38 / 100 * 144 = 85.5072
四舍五入后成了 85.51 加上上一次的58.5 结果比总金额大了。
我又想不用四舍五入了用向下取整,但是又怕有别的问题。
请问我该怎么做?
谢谢

阅读 3.3k
4 个回答

export function currency(val) {
return (Math.round(Number(val) * 100) / 100).toFixed(2) || '0.00';
}

如果四舍五入取整肯定会导致误差,不要四舍五入,显示数据的时候保留两位小数,保存数据的变量保持最精确的状态。

监听变化让后端去算金额返回

多留几位小数, 然后转成整数,偏差可能会小点

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题