的JavaScript。计算百分比会导致1%的差异

时间:2012-06-28 22:33:56

标签: javascript

我在使用某些javascript时出现问题,我正在计算一个百分比。它总是1%的折扣:

pcOff = parseInt((1-(PriceFrom/PriceFromRRP))*100);

PriceFrom和PriceFromRRP是从JSON返回中捕获的,在PriceFrom = '40.00'PriceFromRRP = '50.00'的情况下,pcOff被设置为19;它应该是20个。有趣的事情发生在这里。任何人都能解释一下吗?

3 个答案:

答案 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

这可以防止浮点错误出现在第一位