>  기사  >  웹 프론트엔드  >  JavaScript는 정수와 부동 소수점 숫자를 구분합니다.

JavaScript는 정수와 부동 소수점 숫자를 구분합니다.

青灯夜游
青灯夜游원래의
2021-06-28 16:34:023795검색

javaScript는 정수 값과 부동 소수점 값을 구분하지 않습니다. JavaScript의 모든 숫자는 정수를 포함하여 64비트 부동 소수점 숫자 형식으로 저장됩니다. 예를 들어 2와 2.0은 동일한 숫자이므로 숫자 연산을 수행할 때 진행 상황이 누락되는 문제에 특히 주의하세요.

JavaScript는 정수와 부동 소수점 숫자를 구분합니다.

이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.

숫자 숫자 표현 방법

숫자 유형은 숫자를 나타내며, 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(&#39;a+b == sum&#39;);
}

특정 구현에서 정수 값은 일반적으로 개별 구현(예: 일부 브라우저)에서 실행에 사용될 때까지 32비트 정수 변수 형식으로 저장됩니다. 특정 기능. 32비트 정수에서는 일부 작업이 지원되지 않습니다. 이는 비트 작업을 용이하게 하기 위한 것입니다.

소수를 나타내기 위해 0을 생략할 수도 있고, 숫자를 표현하기 위해 지수 형식을 사용할 수도 있습니다.

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

숫자는 다른 진수를 사용합니다.

다른 진수의 표현 방법

숫자는 4가지 진수를 사용할 수 있습니다: 십진수, 2진수, 8진수, 16진수. 소수가 아닌 정수만 사용하세요.

  • 2진수 표기법: 0으로 시작하고 이어서 소문자 또는 대문자 라틴 문자 B(0b 또는 0B)가 옵니다.
  • 8진수 표기법: 0으로 시작합니다. 0 뒤의 숫자가 0~7 범위에 없으면 해당 숫자는 10진수로 변환됩니다.
  • ECMAScript 5 엄격 모드에서는 8진수 구문 사용이 금지되며 10진수로 처리됩니다.
  • ECMAScript 6에서 8진수를 사용하려면 숫자에 접두사 "0o"를 추가해야 합니다.
  • 16진수 표기법: 0으로 시작하고 그 뒤에 소문자 또는 대문자 라틴 문자

toString() 메소드는 기수를 지정하기 위해 2에서 36 사이의 값을 갖는 정수 매개변수를 허용합니다. 기본값은 10진수입니다. 숫자를 문자열로 변환 parseInt() 두 번째 매개변수는 2 사이의 값을 허용합니다. 36 정수 매개변수는 밑수를 지정하며 기본값은 10진수입니다. 문자열을 숫자로 변환

// 十进制
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 객체 Number
  • Number 객체는 일련의 숫자 관련 상수와 숫자를 캡슐화하는 내장 숫자 객체입니다. 행동 양식.
  • // 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 개체 속성:

PropertyDescription

Number.MAX_VALUE표현 가능한 최대 값숫자 .MIN_VALUE Number.NaN
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_INTEGER표현 가능한 가장 작은 값
구체적으로는 "숫자가 아닌"🎜🎜🎜🎜Number.NEGATIVE_INFINITY🎜 🎜 특히 "음의 무한대"를 참조합니다. 오버플로 시 반환🎜🎜🎜🎜Number.POSITIVE_INFINITY🎜🎜구체적으로 "양의 무한대"를 참조합니다. code>🎜🎜1과 1에 가장 가깝고 1🎜🎜🎜🎜Number.MIN_SAFE_INTEGER🎜🎜JavaScript 최소 안전 정수🎜🎜🎜🎜Number 사이의 차이를 나타냅니다. .MAX_SAFE_INTEGER🎜🎜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)

x의 절대값을 반환합니다Math.sign(x)x가 양수인지 확인하기 위해 x의 부호 함수를 반환합니다. 음수 또는 0Math .random()0과 1 사이의 의사 난수를 반환합니다Math.floor(x)x의 값을 반올림하여 반환합니다.Math.ceil(x)x의 반올림된 값을 반환합니다.Math.round(x)반올림된 정수를 반환합니다.Math.fround(x)숫자의 가장 가까운 단정밀도 부동 소수점 표현을 반환합니다.Math.trunc( x)
Method Description
Math.abs (x) code><code>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)

Return 소수점을 제거하여 x의 정수 부분을 반환합니다. Math.sqrt(x)

🎜x의 제곱근을 반환합니다🎜🎜🎜🎜 Math.cbrt(x)🎜🎜x,y의 큐브 루트 반환)🎜🎜x의 y제곱을 반환합니다.🎜🎜🎜🎜min(), max()🎜🎜더 작은 값 또는 쉼표로 구분된 숫자 인수 목록에서 각각 더 큰 값 🎜🎜🎜🎜sin(), cos(), tan()🎜🎜표준 삼각 함수, 매개 변수는 라디안🎜🎜🎜🎜asin(), acos(), atan(), atan2()🎜🎜역삼각 함수 반환 값은 라디안입니다. 🎜🎜🎜🎜sinh(), cosh(), tanh()🎜🎜쌍곡선 삼각 함수는 라디안입니다.🎜🎜🎜🎜asinh (), acosh(), atanh()🎜🎜반쌍곡선 삼각 함수, 반환 값은 라디안입니다.🎜🎜🎜🎜pow(), exp(), expm1(), log10(), log1p(), log2()🎜 🎜지수 및 로그 함수🎜🎜🎜🎜🎜【관련 추천 :🎜자바스크립트 학습 튜토리얼🎜🎜】🎜🎜

위 내용은 JavaScript는 정수와 부동 소수점 숫자를 구분합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.