0

我在计算百分比时遇到了一些 javascript 问题。它总是有 1% 的折扣:

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

PriceFrom 和 PriceFromRRP 是从 JSON 返回中捕获的,如果PriceFrom = '40.00'pcOffPriceFromRRP = '50.00'被设置为 19;它应该是 20。这里发生了一些有趣的事情。任何人都可以解释一下吗?

4

3 回答 3

1

parseInt不圆。Math.round回合。

于 2012-06-28T22:36:32.360 回答
1

看看这个成绩单

> (1-(40.0/50.0))*100
19.999999999999996

> parseInt(19.999999999999996)
19

> Math.round(19.999999999999996)
20

parseInt尽可能多地读取字符串以形成整数,在这种情况下,在前两个字符 1 和 9 上读取 19。

于 2012-06-28T22:36:53.263 回答
1
(1-(PriceFrom/PriceFromRRP))*100

给出:

19.999999999999996

当你parseInt这样做时,解析器会读取数字,直到它遇到一个非数字 - 即19


你最好的选择(对于这个例子)是最后划分:

100 - PriceFrom*100/PriceFromRRP
20

这可以防止首先出现浮点错误

于 2012-06-28T22:37:18.790 回答