【发布时间】:2020-02-26 10:49:04
【问题描述】:
在后端 (Node.js) 中,我将价格保存为美分 (*100),并且始终不包括增值税。
但是,在前端,我们希望用户能够定义包括增值税在内的价格。
所以我们要做的如下:
含增值税价格:10,00
含增值税的公式:(10*100)/1.21 给出826.4462809917355 Math.round 为:826
826 是我们保存在数据库中的不含增值税的价格。
但是当我们给它加上增值税(21%)时,它就变成了:
(826/100)*1.21
这将变成999.4599999999999。
Math.round 做了 999 个。
因此,当我们的用户填写 10,00 作为含增值税的价格时。最终将是 9,99
【问题讨论】:
-
使用
Math.ceil(999.4599999999999) === 1000?它四舍五入 -
你为什么将
826保存到数据库而不是826.4462809917355? -
@JeremyThille 是的,但我认为在某些情况下我们确实需要四舍五入。不确定四舍五入(ceil)是否适用于每种情况
-
然后使用
Math.floor(price + 0.5)。 9.1 给 9, 9.4 给 9, 9.5 给 10, 9.6 给 10, 9.9 给 10 -
@Mortz 不确定存储浮点数是否是最好的解决方案。如果是这样,我很乐意实施它。但这与添加更多小数不一样吗?因此所有价格 * 1000 或 * 10000 而不是 * 100?
标签: javascript rounding price