なぜこれでは期待どおりの結果が得られないのですか?
console.log(0.2+0.1); // gives 0.30000000000000004
console.log(0.2+0.3); // gives 0.5
console.log(0.2+0.5); // gives 0.7
console.log(0.2+0.4); // gives 0.6000000000000001
なぜfirst
とlast
は期待どおりの結果を出さないのですか?
なぜこれでは期待どおりの結果が得られないのですか?
console.log(0.2+0.1); // gives 0.30000000000000004
console.log(0.2+0.3); // gives 0.5
console.log(0.2+0.5); // gives 0.7
console.log(0.2+0.4); // gives 0.6000000000000001
なぜfirst
とlast
は期待どおりの結果を出さないのですか?
forをJavaScript
使用したためです。IEEE Standard
Binary Floating-Point Arithmetic
すべてfloating point math
がこのようであり、に基づいていIEEE 754 standard
ます。JavaScriptは64-bit floating point representation
、Javaと同じを使用しますdouble
。
浮動小数点演算が壊れている可能性がありますか?
試してください.toFixed()
。このメソッドは、小数点以下の特定の桁数で数値をフォーマットします。
console.log((0.2 + 0.1).toFixed(1)); // gives 0.3
console.log((0.2 + 0.3).toFixed(1)); // gives 0.5
console.log((0.2 + 0.5).toFixed(1)); // gives 0.7
console.log((0.2 + 0.4).toFixed(1)); // gives 0.6