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可能な限り多くの文字列を読み取り、整数を形成します。この場合は、19の最初の2文字である1と9です。

于 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 に答える