我在计算百分比时遇到了一些 javascript 问题。它总是有 1% 的折扣:
pcOff = parseInt((1-(PriceFrom/PriceFromRRP))*100);
PriceFrom 和 PriceFromRRP 是从 JSON 返回中捕获的,如果PriceFrom = '40.00'
pcOffPriceFromRRP = '50.00'
被设置为 19;它应该是 20。这里发生了一些有趣的事情。任何人都可以解释一下吗?
我在计算百分比时遇到了一些 javascript 问题。它总是有 1% 的折扣:
pcOff = parseInt((1-(PriceFrom/PriceFromRRP))*100);
PriceFrom 和 PriceFromRRP 是从 JSON 返回中捕获的,如果PriceFrom = '40.00'
pcOffPriceFromRRP = '50.00'
被设置为 19;它应该是 20。这里发生了一些有趣的事情。任何人都可以解释一下吗?
parseInt
不圆。Math.round
回合。
看看这个成绩单
> (1-(40.0/50.0))*100
19.999999999999996
> parseInt(19.999999999999996)
19
> Math.round(19.999999999999996)
20
parseInt
尽可能多地读取字符串以形成整数,在这种情况下,在前两个字符 1 和 9 上读取 19。
(1-(PriceFrom/PriceFromRRP))*100
给出:
19.999999999999996
当你parseInt
这样做时,解析器会读取数字,直到它遇到一个非数字 - 即19
你最好的选择(对于这个例子)是最后划分:
100 - PriceFrom*100/PriceFromRRP
20
这可以防止首先出现浮点错误