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