Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-从包含增值税的价格中保存不含增值税的价格时的舍入问题_Javascript_Rounding_Price - Fatal编程技术网

Javascript-从包含增值税的价格中保存不含增值税的价格时的舍入问题

Javascript-从包含增值税的价格中保存不含增值税的价格时的舍入问题,javascript,rounding,price,Javascript,Rounding,Price,在后端(Node.js),我以美分(*100)为单位保存价格,并且始终不包括增值税。 然而,在前端,我们希望用户能够定义他们的价格,包括增值税 因此,我们所做的如下: 含增值税的价格:10,00 包含增值税的公式:(10*100)/1.21,该公式给出了826.4462809917355数学。将其四舍五入为:826 826是我们保存在数据库中的不含增值税的价格。 但当我们加上增值税(21%)时,它变成: (826/100)*1.21 将变成999.45999999999 数学圆等于999。 因

在后端(Node.js),我以美分(*100)为单位保存价格,并且始终不包括增值税。
然而,在前端,我们希望用户能够定义他们的价格,包括增值税

因此,我们所做的如下:
含增值税的价格:10,00
包含增值税的公式:
(10*100)/1.21
,该公式给出了
826.4462809917355
数学。将其四舍五入为:
826
826
是我们保存在数据库中的不含增值税的价格。
但当我们加上增值税(21%)时,它变成:

(826/100)*1.21
将变成
999.45999999999

数学圆等于999。

因此,当我们的用户填写10,00作为价格包括增值税。结果是9,99

我的解决方案是将乘数(100)增加到100000。

从那以后就没有任何问题了。可能不是100%的解决方案,因为我认为这只会减少问题的变化。

使用
Math.ceil(999.45999999999)==1000
?它向上取整您为什么要将
826
保存到数据库而不是
826.4462809917355
?@JeremyThille是的,但我认为在某些情况下我们确实需要向下取整。不确定四舍五入(ceil)是否适用于所有情况使用
Math.floor(价格+0.5)
。9.1给出9,9.4给出9,9.5给出10,9.6给出10,9.9给出10@Mortz不确定存储浮点数是否是最好的解决方案。如果是,我很乐意实施它。但这不等于增加更多的小数吗?因此,所有价格都是*1000或*10000,而不是*100?