なぜこれでは期待どおりの結果が得られないのですか?
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 StandardBinary 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