JavaScript小数点誤差
JavaScript小数点誤差:
JavaScriptで小数を掛け算などの計算で、誤差が発生します。本番障害を発生して、調べる所、いままで知らなくてびっくりしました。
例えば656000*2.8-180000の所、1656800のはずだが、1656799.9999999998になってしまった。
下記のサイトで記事があります。
https://blog.apar.jp/program/8900/
結論としてほとんどの10進数の「小数」は、2進数に正しく変換できないから
整数に変換してから計算する。
例えば上記の場合、(656000*28)/10に修正
調べると、他の言語も同じことでもあります。いままで使ったものが大丈夫でしょうか。
現在JAVAを使っていて、同じ事が発生する可能性があります。
対策など下記のサイトをご参照
https://qiita.com/TKR/items/52635175654b9b818b89
JavaScriptで小数を掛け算などの計算で、誤差が発生します。本番障害を発生して、調べる所、いままで知らなくてびっくりしました。
例えば656000*2.8-180000の所、1656800のはずだが、1656799.9999999998になってしまった。
原因
下記のサイトで記事があります。https://blog.apar.jp/program/8900/
結論としてほとんどの10進数の「小数」は、2進数に正しく変換できないから
対策
整数に変換してから計算する。例えば上記の場合、(656000*28)/10に修正
他の言語
調べると、他の言語も同じことでもあります。いままで使ったものが大丈夫でしょうか。現在JAVAを使っていて、同じ事が発生する可能性があります。
対策など下記のサイトをご参照
https://qiita.com/TKR/items/52635175654b9b818b89
コメント
コメントを投稿