2.3.2小数値
6070 ワード
浮動小数点数の副作用
JAvascriptは、現代の多くのプログラミング言語と同様に、「IEEE 754」規格(浮動小数点基準)に従い、浮動小数点計算がホットスポットとなっている.
この時はNumberEPSILONを使用します.
JAvascriptは、現代の多くのプログラミング言語と同様に、「IEEE 754」規格(浮動小数点基準)に従い、浮動小数点計算がホットスポットとなっている.
0.1 + 0.2; // 0.30000000000000004
0.1 + 0.2 === 0.3; // false
このように小数点を計算した後、同じかどうかをチェックしたい場合があり、結果は人の想像値とは異なるので、この問題を解決する方法が必要です.この時はNumberEPSILONを使用します.
function numbersCloseEnoughToEqual(a, b) {
return Math.abs(a - b) < Number.EPSILON;
}
let a = 0.1 + 0.2;
let b = 0.3;
numbersCloseEnoughToEqual(a, b); // true
numbersCloseEnoughToEqual(0.0000001, 0.0000002); // false
Number.EPSILONペンif (!Number.EPSILON) {
Number.EPSILON = Math.pow(2,-52);
}
注記前の数字が大きいほど// 3 - 컴퓨터가 이해할 수 있는 가장 작은 숫자 단위
Number.EPSILON; // 2.220446049250313e-16
// 5 - 표현할 수 있는 가장 큰 양수 값
Number.MAX_VALUE; // 1.7976931348623157e+308
// 2 - 표현할 수 있는 가장 작은 양수 값
Number.MIN_VALUE; // 5e-324
// 4 - 안전하게 표현할 수 있는 가장 큰 정수 값
Number.MAX_SAFE_INTEGER; // 9007199254740991
// 1 - 안전하게 표현할 수 있는 가장 작은 정수 값
Number.MIN_SAFE_INTEGER; // -9007199254740991
// 크기 비교
const Num = Number;
Num.MIN_SAFE_INTEGER < Num.MIN_VALUE < Num.EPSILON < Num.MAX_SAFE_INTEGER < Num.MAX_VALUE
// 안전하게 표현할 수 있는 수를 넘어가면 오작동한다.
Num.MAX_SAFE_INTEGER + 2 === Num.MAX_SAFE_INTEGER + 1; // true
Reference
この問題について(2.3.2小数値), 我々は、より多くの情報をここで見つけました https://velog.io/@jude-ui/2.3.2-작은-소수-값テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol