ホームページ > 記事 > ウェブフロントエンド > JS の数値型 (詳細なチュートリアル)
この記事では、主に JavaScript の数値型の関連知識ポイントの詳細な分析を提供します
次の質問に正しく答えることができますか?
0.1 + 0.2 == 0.3 本当ですか?
。e-5 とはどのくらいの意味ですか?
8進数をどう表現するか?
塩基を変換するにはどうすればよいですか?
文字列を数値または整数に変換するにはどうすればよいですか?逆はどうでしょうか? 16進数をどう扱うか?
parseInt(0x12, 16) の戻り値は何ですか? 0x12でしょうか?
Number.MAX_VALUE は最大値です (new Number(12)).MAX_VALUE とは何ですか?
JavaScriptで四捨五入するにはどうすればよいですか?小数点以下 3 桁の精度を維持するにはどうすればよいですか?
乱数を取得するにはどうすればよいですか?丸めるにはどうすればいいですか?切り上げる方法は?
Number 型は数値を表し、JavaScript では「倍精度 64 ビット形式の IEEE 754 値」) を使用して数値を表現します。
他のプログラミング言語 (C や Java など) とは異なり、JavaScript では整数値と浮動小数点値が区別されないため、JavaScript ではすべての数値が浮動小数点値で表されるため、この問題には特に注意してください。数値操作を実行するときに進行状況が失われる問題。
0.1 + 0.2 = 0.30000000000000004; 0.1 + 0.2 == 0.3; // false // 浮点运算判断相等 var ACCURACY = 1e-5; //定义精度精确到0.00001 var a = 0.1; var b = 0.2; var sum = 0.3; // 判断相差小于精度就认为相等 if (a + b - sum < ACCURACY) { console.log('a+b == sum'); }
特定の実装では、整数値は通常 32 ビット整数変数として扱われ、個々の実装 (一部のブラウザーなど) では、実行に使用されるまで 32 ビット整数変数の形式でも格納されます。 32 ビット整数でサポートされていない一部の演算は、ビット演算を容易にすることを目的としています。
小数を表すために 0 を省略したり、指数形式を使用して数値を表すことができます
.9; // 0.9 1E3 // 1000 2e6 // 2000000 0.1e2 // 10 1e-5 // 0.00001
異なる基数の表現方法
数値には、10 進数、2 進数、8 進数、および 4 つの基数を使用できます10 16 進数。 10 進数以外の整数のみを使用してください。
二進表記: 0 で始まり、その後に小文字または大文字のラテン文字 B (0b または 0B) が続きます
八進表記: 0 で始まります。 0 の後の数値が 0 ~ 7 の範囲にない場合、数値は 10 進数に変換されます。
ECMAScript 5 厳密モードでは 8 進数構文の使用は禁止されており、10 進数として扱われます
ECMAScript 6 で 8 進数を使用するには、数値にプレフィックス「0o」を追加する必要があります
16 進数表現方法:ゼロで始まり、その後に小文字または大文字のラテン文字が続きます。
// 十进制 12345678 42 0777 // 在非严格格式下会被当做八进制处理 (用十进制表示就是511) // 二进制 var a = 0b100000; // 32 var b = 0b0111111; // 63 var c = 0B0000111; // 7 // 八进制 var n = 0755; // 493 var m = 0644; // 420 var a = 0o10; // ES6 :八进制 // 十六进制 0xFFFFFFFFFFFFFFFFF // 295147905179352830000 0x123456789ABCDEF // 81985529216486900 0XA // 10
// toString转换,输入为Number,返回为String var n = 120; n.toString(); // "120" n.toString(2); // "1111000" n.toString(8); // "170" n.toString(16); // "78" n.toString(20); // "60" 0x11.toString(); // "17" 0b111.toString(); // "7" 0x11.toString(12);// "15" // parseInt转换,输入为String,返回为Number parseInt('110'); // 110 parseInt('110', 2); // 6 parseInt('110', 8); // 72 parseInt('110', 16); // 272 parseInt('110', 26); // 702 // toString和parseInt结合使用可以在两两进制之间转换 // 将 a 从36进制转为12进制 var a = 'ra'; // 36进制表示的数 parseInt(a, 36).toString(12); // "960"
Number オブジェクトのプロパティ:
Number.MAX_VALUE | 表現できる最大値 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
表現可能な最小値 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
は具体的には「非数値」を指します | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
は具体的にはオーバーフロー時に返される「負の無限大」を指します | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
は具体的には「正の無限大」を指します; オーバーフローの場合 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
を返します。1 と 1 に最も近く、1 より大きい最小の Number との差を表します。 MAX_SAFE_INTEGER | JavaScript の最大安全整数 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Number对象方法Number对象方法可以使用 Number. 的形式调用,也可以使用全局调用。
parseInt() 方法需要注意:
parseInt('123'); // 123 parseInt('123', 10); // 123 parseInt('123', 8); // 83 parseInt('123', 16); // 291 parseInt("11", 2); // 3 parseInt('0x123', 10); // 0 parseInt('0x123', 16); // 291 parseInt('0x123'); // 291 // 如果第一个参数不是字符串,会先把第一个参数转成字符串 parseInt('12', 16); // 18 parseInt(12, 16); // 18 // toString方法会将数字转换为10进制的字符串 parseInt(0xf, 16); // 21 0xf.toString(); // '15' parseInt('15', 16); // 21 parseInt('23.56'); // 23 parseInt("hello", 16); // NaN parseInt("aello", 16); // 174 Number类型原型方法Number类型原型上还有一些方法来对数字进度进行取舍,这些方法可以被 Number 实例对象调用:
这些原型方法可以被Number实例对象调用: var numObj = 12345.6789; numObj.toExponential(); // "1.23456789e+4" numObj.toExponential(2); // "1.23e+4" numObj.toExponential(4); // "1.2346e+4" numObj.toPrecision(); // "12345.6789" numObj.toPrecision(2); // "1.2e+4" numObj.toPrecision(4); // "1.235e+4" numObj.toFixed(); // 返回 "12346":进行四舍五入,不包括小数部分 numObj.toFixed(1); // 返回 "12345.7":进行四舍五入 numObj.toFixed(6); // 返回 "12345.678900":用0填充 (1.23e+20).toFixed(2); // 返回 "123000000000000000000.00" (1.23e-10).toFixed(2); // 返回 "0.00" 2.34.toFixed(1); // 返回 "2.3" -2.34.toFixed(1); // 返回 -2.3 (由于操作符优先级,负数不会返回字符串) (-2.34).toFixed(1); // 返回 "-2.3" (若用括号提高优先级,则返回字符串) 数学对象(Math)和Number相关的是,JavaScript对象中内置的Math对象,提供了很多数学常数和函数的属性和方法。 属性列表:
Math の三角関数 sin のパラメーターはラジアンです。角度の場合は、(Math.PI / 180)
|
以上がJS の数値型 (詳細なチュートリアル)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。