JavaScript は整数と浮動小数点数を分離します

青灯夜游
リリース: 2023-01-07 11:41:14
オリジナル
3786 人が閲覧しました

JavaScript は整数値と浮動小数点値を区別しません。 JavaScript のすべての数値は、整数を含む 64 ビット浮動小数点数の形式で格納されます。たとえば、2 と 2.0 は同じ数値であるため、数値演算を実行するときに進行状況が失われる問題に特に注意してください。

JavaScript は整数と浮動小数点数を分離します

このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

数値表現方法

数値型は数値を表し、JavaScriptでは「IEEE 754規格で定められた倍精度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(&#39;a+b == sum&#39;);
}
ログイン後にコピー

特定の実装では、整数値は通常 32 ビット整数変数として扱われます。個々の実装 (一部のブラウザなど) では、整数値は、最終的に取得されるまで 32 ビット整数変数の形式でも格納されます。 32 ビット整数でサポートされていない特定の演算を実行するために使用され、ビット演算を容易にするために使用されます。

0 を省略して小数を表すことも、指数形式を使用して数値を表すこともできます。

.9;   // 0.9
1E3   // 1000
2e6   // 2000000
0.1e2 // 10
1e-5  // 0.00001
ログイン後にコピー

さまざまな基数で数値を表す

さまざまな基数 表現方法

Number では、10 進数、2 進数、8 進数、16 進数の 4 つの数値体系を使用できます。 10 進数以外の数値には整数のみを使用してください。

  • 2 進表現: 0 で始まり、その後に小文字または大文字のラテン文字 B (0b または 0B)が続きます
  • 8 進表現: 0 で始まります。 0 の後の数値が 0 ~ 7 の範囲にない場合、数値は 10 進数に変換されます。
  • ECMAScript 5 厳密モードでは 8 進数構文の使用は禁止されており、10 進数として扱われます
  • ECMAScript 6 で 8 進数を使用するには、数値にプレフィックス「0o」を追加する必要があります
  • 16 進表記: ゼロで始まり、その後に小文字または大文字のラテン文字 X (0x または 0X)が続きます
  • #
    // 十进制
    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
    ログイン後にコピー

さまざまな基数の変換

16 進数の変換は主に Number の toString() メソッドまたは parseInt() メソッドを使用します:

    toString() メソッドは 2 ~ 36 の値を持つ整数を受け入れます パラメータは基本システムを指定します。数値を文字列に変換する
  • parseInt() 2 番目のパラメータは、2 から 36 までの値を持つ整数を受け入れます。パラメータは基本系を指定します。デフォルトは 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(&#39;110&#39;); // 110
    parseInt(&#39;110&#39;, 2);  // 6
    parseInt(&#39;110&#39;, 8);  // 72
    parseInt(&#39;110&#39;, 16); // 272
    parseInt(&#39;110&#39;, 26); // 702
    
    // toString和parseInt结合使用可以在两两进制之间转换
    // 将 a 从36进制转为12进制
    var a = &#39;ra&#39;;  // 36进制表示的数
    parseInt(a, 36).toString(12); // "960"
    ログイン後にコピー

Number オブジェクト Number

Number オブジェクトは、一連の Number 関連の定数とメソッドをカプセル化する組み込みの Number オブジェクトです。

var na = Number(8);  // 8
na = Number(&#39;9.5&#39;);  // 9.5
na = new Number(&#39;9.3&#39;); // Number 对象,仅可以使用原型方法
ログイン後にコピー

Number オブジェクト プロパティ:

プロパティ説明#Number.MAX_VALUENumber.MIN_VALUENumber.NaNNumber.NEGATIVE_INFINITYNumber.POSITIVE_INFINITY Number.EPSILON#Number.MIN_SAFE_INTEGERNumber.MAX_SAFE_INTEGER
表現可能な最大値
表現可能な最小値
特別に「非数値」を参照します
特に「負の無限大」を指し、オーバーフロー時に返されます
は特に「正の無限大」を指します。オーバーフローすると、
は 1 を表し、 1 に最も近い最小の数値と 1 を超える最小数値の差
JavaScript 最小安全整数
JavaScript の最大安全整数

Number对象方法

Number对象方法可以使用 Number. 的形式调用,也可以使用全局调用。

方法描述
Number.parseFloat()把字符串参数解析成浮点数,左右等效于一元运算法+
Number.parseInt()把字符串解析成特定基数对应的整型数字
Number.isFinite()判断传递的值是否为有限数字
Number.isInteger()判断传递的值是否为整数
Number.isNaN()判断传递的值是否为 NaN
Number.isSafeInteger()判断传递的值是否为安全整数

parseInt() 方法需要注意:

  • parseInt() 参数可以有两个参数:数字字符串和进制
  • 如果第一个参数为非指定进制的数字字符串,则结果为0
  • 如果第一个参数为非字符串,会首先调用该参数的toString()方法转换为字符串
  • 第一个参数中非指定进制可识别的字符会被忽略
  • 如果给定的字符串不存在数值形式,函数会返回一个特殊的值 NaN
  • 如果调用时没有提供第二个参数,则使用字符串表示的数字的进制
parseInt(&#39;123&#39;); // 123
parseInt(&#39;123&#39;, 10); // 123
parseInt(&#39;123&#39;, 8);  // 83
parseInt(&#39;123&#39;, 16); // 291
parseInt("11", 2); // 3

parseInt(&#39;0x123&#39;, 10); // 0
parseInt(&#39;0x123&#39;, 16); // 291
parseInt(&#39;0x123&#39;); // 291

// 如果第一个参数不是字符串,会先把第一个参数转成字符串
parseInt(&#39;12&#39;, 16); // 18
parseInt(12, 16);   // 18

// toString方法会将数字转换为10进制的字符串
parseInt(0xf, 16);  // 21
0xf.toString(); // &#39;15&#39;
parseInt(&#39;15&#39;, 16); // 21

parseInt(&#39;23.56&#39;);  // 23
parseInt("hello", 16); // NaN
parseInt("aello", 16); // 174
ログイン後にコピー

Number类型原型方法

Number类型原型上还有一些方法来对数字进度进行取舍,这些方法可以被 Number 实例对象调用:

方法描述
toExponential()返回一个数字的指数形式的字符串
toFixed()返回指定小数位数的表示形式
toPrecision()返回一个指定精度的数字

这些原型方法可以被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.E 欧拉常数,也是自然对数的底数, 约等于 2.718
Math.LN2 2的自然对数, 约等于0.693
Math.LN10 10的自然对数, 约等于 2.303
Math.LOG2E 以2为底E的对数, 约等于 1.443
Math.LOG10E 以10为底E的对数, 约等于 0.434
Math.PI 圆周率,一个圆的周长和直径之比,约等于 3.14159
Math.SQRT2 2的平方根,约等于 1.414
Math.SQRT1_2 1/2的平方根, 约等于 0.707

Math の三角関数 sin およびその他のパラメーターはラジアンです。角度であれば、それを使用できます (Math.PI / 180)

xx#Math.sign(x)## であるかどうかを判断します。 #Math .random()##Math。 Floor(x)切り上げ後の x の値を返します#丸められた整数を返します。# Math.fromround(x) Math.trunc(x)Math.sqrt(x)Math.cbrt(x)##Math.hypot([x[,y[,…]]])#パラメータの二乗和の平方根を返しますxxmin( の y 乗を返します)、max()コンマで区切られた数値を返します。引数リスト内の小さい値または大きい値 (それぞれ)sin()、cos()、tan ()標準三角関数; 引数はラジアン単位です asin()、acos()、atan()、atan2()Inverse三角関数; 戻り値はラジアンです。sinh()、cosh()、tanh()双曲線三角関数; 戻り値はラジアンです。[関連する推奨事項: ##]
方法 説明
##Math.abs(x) # の絶対値を返します。
x の符号関数を返し、x が正の数、負の数、または 0
0 から 1 までの擬似乱数を返します
切り上げ後の x の値を返す ##Math.ceil(x)
Math.round(x)
数値の最も近い単精度浮動小数点表現を返します
小数点を除いた x の整数部分を返します
x の平方根を返します
xx の立方根を返します
Math.pow(x ,y)
##asinh()、acosh()、atanh() 逆双曲線三角関数; 戻り値はラジアンです。
pow() 、exp()、expm1()、log10()、log1p( )、log2() 指数関数および対数関数
JavaScript 学習チュートリアル

以上がJavaScript は整数と浮動小数点数を分離しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート