Heim  >  Artikel  >  Web-Frontend  >  JavaScript trennt Ganzzahlen und Gleitkommazahlen

JavaScript trennt Ganzzahlen und Gleitkommazahlen

青灯夜游
青灯夜游Original
2021-06-28 16:34:023775Durchsuche

JavaScript unterscheidet nicht zwischen Ganzzahlwerten und Gleitkommawerten. Alle Zahlen in JavaScript werden in Form von 64-Bit-Gleitkommazahlen gespeichert, beispielsweise sind 2 und 2,0 die gleichen Zahlen. Achten Sie daher besonders auf das Problem des fehlenden Fortschritts bei der Ausführung von Zahlenoperationen.

JavaScript trennt Ganzzahlen und Gleitkommazahlen

Die Betriebsumgebung dieses Tutorials: Windows 7-System, JavaScript-Version 1.8.5, Dell G3-Computer.

Zahlendarstellungsmethode für Zahlen

Der Zahlentyp stellt Zahlen dar. JavaScript verwendet zur Darstellung von Zahlen „64-Bit-Werte im 64-Bit-Format mit doppelter Genauigkeit (IEEE 754-Werte)“.

Im Gegensatz zu anderen Programmiersprachen (wie C und Java) JavaScript unterscheidet nicht zwischen Ganzzahlwerten und Gleitkommawerten Alle Zahlen werden in JavaScript durch Gleitkommawerte dargestellt. Achten Sie daher besonders darauf der mangelnde Fortschritt bei der Durchführung von Zahlenoperationen.

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;);
}

In bestimmten Implementierungen werden Ganzzahlwerte normalerweise als 32-Bit-Ganzzahlvariablen behandelt. In einzelnen Implementierungen (z. B. einigen Browsern) werden sie auch in Form von 32-Bit-Ganzzahlvariablen gespeichert, bis sie zur Ausführung verwendet werden Eine bestimmte Funktion wird von 32-Bit-Ganzzahlen nicht unterstützt. Dies dient der Erleichterung von Bitoperationen.

Sie können 0 weglassen, um Dezimalzahlen darzustellen, oder Sie können die Exponentialform verwenden, um Zahlen darzustellen.

.9;   // 0.9
1E3   // 1000
2e6   // 2000000
0.1e2 // 10
1e-5  // 0.00001

Zahlen haben unterschiedliche Basen. binär, oktal und hexadezimal. Verwenden Sie nur ganze Zahlen für nicht-dezimale Zahlen.

Binäre Notation: Beginnend mit Null, gefolgt von einem kleinen oder großen lateinischen Buchstaben B (0b oder 0B)Oktale Notation: Beginnend mit 0. Wenn die Zahl nach 0 nicht im Bereich von 0 bis 7 liegt, wird die Zahl in eine Dezimalzahl umgewandelt.

Die Verwendung der Oktalsyntax ist im strengen Modus von ECMAScript 5 verboten und wird als Dezimalzahl behandelt.

    Die Verwendung von Oktalzahlen in ECMAScript 6 erfordert das Hinzufügen des Präfixes „0o“ zu einer Zahl.
  • Hexadezimale Schreibweise: beginnend mit Null, gefolgt von a Die Methode „toString()“ in Klein- oder Großbuchstaben akzeptiert einen ganzzahligen Parameter mit einem Wert zwischen 2 und 36, um die Basis anzugeben. Der Standardwert ist „Zahl in Zeichenfolge konvertieren“
  • parseInt() Der zweite Parameter akzeptiert einen Wert zwischen 2 und 36 Der Integer-Parameter gibt die Basis an und der Standardwert ist „String in Zahl konvertieren“
  • // 十进制
    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
  • Number-Objekt Number
Number-Objekt ist ein integriertes Zahlenobjekt, das eine Reihe von Zahlenkonstanten kapselt Methoden.

// 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-Objekteigenschaften:

  • Property
  • Description

Number.MAX_VALUE

Der maximal darstellbare Wert

Nummer .MIN_VALUE Der kleinste darstellbare WertNumber.NaNBezieht sich speziell auf „Nicht-Zahl“
Number.MAX_VALUE 可表示的最大值
Number.MIN_VALUE 可表示的最小值
Number.NaN 特指”非数字“
Number.NEGATIVE_INFINITY 特指“负无穷”;在溢出时返回
Number.POSITIVE_INFINITY 特指“正无穷”;在溢出时返回
Number.EPSILON 表示1和比最接近1且大于1的最小Number之间的差别
Number.MIN_SAFE_INTEGER JavaScript最小安全整数
Number.MAX_SAFE_INTEGERNumber.NEGATIVE_INFINITY Bezieht sich speziell auf „negative Unendlichkeit“; Rückgabe bei Überlauf
Number.POSITIVE_INFINITY🎜🎜Bezieht sich insbesondere auf „positive Unendlichkeit“; Rückgabe bei Überlauf🎜🎜🎜🎜Number.EPSILON🎜🎜Stellt die Differenz zwischen 1 und der kleinsten Zahl dar, die 1 am nächsten kommt und größer als 1 ist .MAX_SAFE_INTEGER🎜🎜JavaScript maximale sichere Ganzzahl🎜🎜🎜🎜

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

Die Parameter der trigonometrischen Funktion sin in der Mathematik sind Bogenmaß. Wenn es sich um einen Winkel handelt, können Sie (Math.PI / 180) verwenden (x) code>

Gibt den absoluten Wert von x zurückMath.sign(x)Gibt die Vorzeichenfunktion von x zurück, um zu bestimmen, ob x eine positive Zahl ist, a negative Zahl oder 0Math .random()Math.floor(x)Math.ceil(x)Gibt x hoch y zurück
Math.abs(x) 返回x的绝对值
Math.sign(x) 返回x的符号函数, 判定x是正数,负数还是0
Math.random() 返回0到1之间的伪随机数
Math.floor(x) 返回x向上取整后的值
Math.ceil(x) 返回x向上取整后的值
Math.round(x) 返回四舍五入后的整数.
Math.fround(x) 返回数字的最接近的单精度浮点型表示
Math.trunc(x) 返回x的整数部分,去除小数
Math.sqrt(x) 返回x的平方根
Math.cbrt(x) 返回x的立方根
Math.hypot([x[,y[,…]]]) 返回其参数平方和的平方根
Math.pow(x,y)Gibt eine Pseudozufallszahl zwischen 0 und 1 zurück
Gibt den aufgerundeten Wert von x zurück
Gibt den aufgerundeten Wert von > Gibt die gerundete Ganzzahl zurück.
Math.frond(x) Gibt die nächstgelegene Gleitkommadarstellung mit einfacher Genauigkeit der Zahl zurück
Math.trunc( x) Gibt den ganzzahligen Teil von x zurück, wobei die Dezimalzahl entfernt wird
Math.sqrt(x) Gibt die Quadratwurzel von x zurück
Math.cbrt(x) Kubikwurzel von x,y zurückgeben

min(), max()Gibt das kleinere oder zurück größerer Wert (jeweils) aus einer durch Kommas getrennten Liste numerischer Argumente

🎜🎜sin(), cos(), tan()🎜🎜Standardmäßige trigonometrische Funktionen; Parameter sind Bogenmaß🎜🎜🎜🎜asin(), acos(), atan(), atan2()🎜🎜Inverse trigonometrische Funktionen; Rückgabewert ist Bogenmaß 🎜🎜🎜🎜sinh(), cosh(), tanh()🎜🎜hyperbolische trigonometrische Funktion; der Rückgabewert ist Bogenmaß.🎜🎜🎜🎜asinh (), acosh(), atanh()🎜🎜antihyperbolische trigonometrische Funktionen; der Rückgabewert ist Bogenmaß.🎜🎜🎜🎜pow(), exp(), expm1(), log10(), log1p(), log2()🎜 🎜Exponentielle und logarithmische Funktionen🎜🎜🎜🎜🎜【Verwandte Empfehlungen:🎜Javascript-Lerntutorial🎜🎜】🎜🎜

Das obige ist der detaillierte Inhalt vonJavaScript trennt Ganzzahlen und Gleitkommazahlen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn