私はJavaScriptの浮動小数点演算を使用していくつかの奇妙なことに遭遇しましたが、頭の上からそれらを思い出すことはできません!
JavaScriptを使用して数学を行うときによくある間違いは何ですか?
JavaScriptの算術に関する一般的な問題は、parseInt
の使用、またはその欠如に関連しています。
文字列を整数に変換するときに基数を使用しない:
parseInt("0137"); // 95!
parseInt("0137", 10); // 137
算術演算でparseInt
をまったく使用しない:
var a = "2";
alert(a + 5); // 25
alert(a - 5): // -3!
浮動小数点演算の誤解(JSだけでなく、すべての言語に適用されます):
alert(23 * 1.40 == 32.2); // false, 23 * 1.40 is represented as 32.199999999
alert((23 * 1.40).toFixed(1) == 32.2); // true
浮動小数点で通貨を計算すると、丸めエラーが発生する可能性があります。通貨の値は、処理する前に整数(100倍)として扱う必要があります。
よくある間違い(浮動小数点数ではなく、文字列と整数の場合)は、JavaScriptに強い型付けがないことを忘れていることです。したがって、次のような状況に遭遇する可能性があります。
var myVar = 7; // 7
myVar += 5; // 12
var myVar = "7"; // 7
myVar += 5; // 75
var myVar = "cat"; // cat
myVar += 5; // cat5
これらはすべて、JavaScriptで完全に有効なステートメントです。
しかし、 "7"と "cat"はどちらも文字列ですが、すべての文字列が同じように扱われるわけではないため、奇妙になります。
var myVar = 77;
parseInt(myVar); // 77
var myVar = "77";
parseInt(myVar); // 77
var myVar = "cat";
parseInt(myVar); // NaN
var myVar = "77cat";
parseInt(myVar); // 77
それは言うまでもありません(@Tatuが書いたように):
var myVar = "077";
parseInt(myVar); // 63