JS倍精度浮動小数点

まず、どのように浮動小数点へデータを転送する   https://www.zhihu.com/question/21711083

7707397-a94799e9e1732a9e.png

二、JSの数

JavaScriptでは、すべての数値は、64ビット浮動小数点数、真偶数の整数として格納され、すべての整数および浮動小数点データ・タイプの数です。


7707397-3feabe7229b2336c.png

第三に、何が問題の原因?

1、精度の分別損失は、0.1 + 0.2〜0.3に等しくありません

図2に示すように、整数の最大範囲

(-9007199254740991、1)、Number.MIN_SAFE_INTEGER - - (253)整数の安全範囲と最小 - それが最大カウント(1、Number.MAX_SAFE_INTEGER、9007199254740991 253)により最大54の整数です。だから、限り、この範囲を超えると、精度の問題がある破棄されます。


第四に、ソリューション

オープンソースライブラリ、BIGINT、

0.1 + 0.2-0.3 // 5.551115123125783e-17

5.551115123125783e-17.toFixed(20)// '0.00000000000000005551'

5.551115123125783e-17 <Number.EPSILON * Math.pow(2,2)//真

ます。https://www.jianshu.com/p/e071e1da8dfdで再現

おすすめ

転載: blog.csdn.net/weixin_34082789/article/details/91060349