Windows7 で Chrome 53.0.2785.116 の最新版を使用しています。
JSで自動で税込みの価格を表示しようと下記のように記述しました。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>test</title> <script type="text/javascript"> const TAX = 1.08; var result = 55000 * TAX; console.log(result); </script> </head> <body> </body> </html>
計算結果が 59400.00000000001
になります。
試しに他の値(40000, 1200, 100, 648, 550, 550000
)を入れてみましたが、丸め問題は発生しません。
単純に小数点以下を切り捨てるなら、下記のように Math.floor()
を使えば想定通りの結果が返ってきます。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>test</title> <script type="text/javascript"> const TAX = 1.08; var result = Math.floor(55000 * TAX); console.log(result); </script> </head> <body> </body> </html>
なぜ、55000
だけうまく計算されないのでしょうか?
Math.floor()
を使うことで問題は解決しておりますので、計算されない理由を教えてくださいm(__)m
追記
1500, 2500, 3500, 4500, 5500, 6500, 7500, 8500, 9500
を試してみましたが、下記は丸め問題が発生するようです。どういうことでしょう(?_?)
3500 * 1.08
は 3780.0000000000005
6500 * 1.08
は 7020.000000000001
7500 * 1.08
は 8100.000000000001
回答6件
あなたの回答
tips
プレビュー