GVKun编程网logo

Javascript基础教程之数据类型 (数值 Number)(javascript中数据类型)

19

如果您对Javascript基础教程之数据类型感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于Javascript基础教程之数据类型的详细内容,我们还将为您解答数值Numbe

如果您对Javascript基础教程之数据类型 感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于Javascript基础教程之数据类型 的详细内容,我们还将为您解答数值 Number的相关问题,并且为您提供关于JavaScript 中的数据类型Number、javascript中的数据类型number、JavaScript基本类型值-Number类型、JavaScript基础之数据类型的有价值信息。

本文目录一览:

Javascript基础教程之数据类型 (数值 Number)(javascript中数据类型)

Javascript基础教程之数据类型 (数值 Number)(javascript中数据类型)

javascript中想限定一个数的数值,无需限定它是整数还是浮点数型

复制代码 代码如下:

    var num1 = 80 ;
    var num2 = 55.51;
    var num3 = -34;
    var num4 = 9e5;
    document.write(num1 + " " + num2 + " " + num3 + " " + num4);
//运行结果 80 55.51 -34 900000

toExponential()函数是将数值转换为科学技术的方式显示,例如:

复制代码 代码如下:

  document.write(num2.toExponential(9));//输出5.551000000e+1

转下w3cschool数值的的对象属性和对象方法

Number 对象属性

属性 描述
constructor 返回对创建此对象的 Number 函数的引用。
MAX_VALUE 可表示的最大的数。
MIN_VALUE 可表示的最小的数。
NaN 非数字值。
NEGATIVE_INFINITY 负无穷大,溢出时返回该值。
POSITIVE_INFINITY 正无穷大,溢出时返回该值。
prototype 使您有能力向对象添加属性和方法。

Number 对象方法

方法 描述
toString 把数字转换为字符串,使用指定的基数。
toLocaleString 把数字转换为字符串,使用本地数字格式顺序。
toFixed 把数字转换为字符串,结果的小数点后有指定位数的数字。
toExponential 把对象的值转换为指数计数法。
toPrecision 把数字格式化为指定的长度。
valueOf 返回一个 Number 对象的基本数字值。

以上就是关于javascript数据类型中数值的全部内容了,希望大家能够喜欢。

您可能感兴趣的文章:
  • JavaScript数据结构Number
  • javascript Number 与 Math对象的介绍
  • JavaScript parseInt()与Number()区别案例详解
  • javaScript把其它类型转换为Number类型
  • JS大坑之19位数的Number型精度丢失问题详解
  • 详解JS数值Number类型
  • JavaScript 中的数据类型Number

JavaScript 中的数据类型Number

JavaScript 中的数据类型Number

前言

Number 类型使用 IEEE 754 格式表示整数和浮点值(在某些语言中也叫双精度值)。

IEEE二进制浮点数算术标准;

IEEE 754规定了四种表示浮点数值的方式:单精确度(32位)、双精确度(64位)、延伸单精确度(43比特以上,很少使用)与延伸双精确度(79比特以上,通常以80位实现)。

js中用的就是双精确度(64位)

不同数值类型有不同的数值字面量格式:

  • 十进制整数
  • 八进制(以 8 为基数)
  • 十六进制(以 16 为基数)

1、浮点数

数值中必须包含小数点,而且小数点后面必须至少有一个数字。

经典问题:0.1 + 0.2 == 0.3 吗? 答案是不相等;

因为在浮点数运算过程中存在舍入误差,之所以存在这种舍入错误,是因为使用了IEEE754数值,这种错误并非ECMAScript 所独有。只要是使用这种格式的语言都有这个问题。

2、值的范围

  • 最小数值: Number.MIN_VALUE 5e-324
  • 最大数值: Number.MAX_VALUE 1.797 693 134 862 315 7e+308
  • 数值超出JavaScript表示范围: Infinity(正 无穷大) -Infinity(负无穷大)
  • 确定数值是否为有限数: isFinite()函数

3、NaN

  • 意思:不是数值(not a number)
  • 表示本来要返回数值的操作失败了(而不是抛出错误)
  • 任何涉及 NaN 的操作始终返回 NaN
  • NaN 不等于包括 NaN 在内的任何值, 即console.log(NaN == NaN); // false
  • isNaN()函数, 判断传入其中的参数是否不是数值
  • isNaN()会尝试把参数转换成数值
console.log(isNaN(NaN)); // true
console.log(isNaN(''abc'')); // true
console.log(isNaN(''123'')); // false
console.log(isNaN(true)); // false
console.log(isNaN(12)); // false

首先会调用对象的valueOf() 方法,然后再确定返回的值是否可以转换为数值。如果不能,再调用 toString()方法, 并测试其返回值。

4、数值转换

  • 将非数值转换为数值

Number()函数,可用于任何数据类型:

console.log(Number(false)); // 0
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN
console.log(Number(1)); // 1
console.log(Number(0012)); // 10 八进制转换
console.log(Number(070)); // 56 八进制转换
console.log(Number(0x1f)); // 31 十六进制转换为十进制整数
console.log(Number(018)); // 18 忽略前面0
console.log(Number(12.23)); // 12.23
console.log(Number(''123'')); // 123
console.log(Number(''123bule'')); // NaN
console.log(Number('' 123'')); // 123
console.log(Number('''')); // 0

parseInt()函数 ++需要得到整数时优先使用 parseInt()函数;++ ( Number()函数转换字符串相对复杂,如果已经明确就是想要取整的话,优先使用parseInt()函数 )

parseInt()函数会忽略字符串最前面的空格,第一个非空格字符开始转换;如果第一个字符不是数值字符、加号或减号,parseInt()立即 返回 NaN

parseInt() 更关注于字符串是否包含数值,如下:

console.log(parseInt(123)); // 123
console.log(parseInt(0123)); // 83 解释为八进制整数。
console.log(parseInt(false)); // NaN
console.log(parseInt(''123'')); // 123
console.log(parseInt(''0123'')); // 123
console.log(parseInt(''123.23'')); // 123
console.log(parseInt(''123bule'')); // 123
console.log(parseInt('' 123'')); // 123
console.log(parseInt(''23.74'')); // 23
console.log(parseInt('''')); // NaN
// 与Number()区别
console.log(Number('''')); // 0
console.log(Number(false)); // 0
console.log(Number(''123bule'')); // 123
// 从这里可以看parseInt() 更关注于字符串是否包含数值
parseInt("0xAF", 16); // 175
parseInt("AF", 16); // 175 提供了16进制参数,可以省略0x
parseInt("AF");      // NaN , 没有提供第二个参数,就不可以

不传底数参数相当于让 parseInt()自己决定如何解析,所以为避免解析出错,建议始终传给它第二个参数。

parseInt()函数可以接收第二个参数,用于指定底数(进制数);

如下:

parseFloat()函数 同parseInt()函数类似。区别之处在于,一个是它识别有效的小数点(也就是第一次出现的小数点,再后面的再出现小数点就都忽略了);另一个是始终忽略字符串开头的零; parseFloat()只解析十进制值,不能指定底数; 十六进制数值始终会返回 0

如下:

console.log(parseFloat(''123bule'')); // 123
console.log(parseFloat(''23.74''));  // 23.74
console.log(parseFloat(''023.74'')); // 23.74
console.log(parseFloat(''23.74.2'')); // 23.74
console.log(parseFloat(0xAF));  // 175
console.log(parseFloat(''0xAF'')); // 0
console.log(parseFloat(012)); // 10
console.log(parseFloat(''012'')); // 12

到此这篇关于JavaScript 中的数据类型Number的文章就介绍到这了,更多相关JavaScript Number内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

您可能感兴趣的文章:
  • MySQL中JSON字段数据类型详解
  • javaScript中一些常见的数据类型检查校验
  • JavaScript新增的两个原始数据类型详解(Record和Tuple)
  • JavaScript那些不经意间发生的数据类型自动转换
  • JavaScript的引用数据类型你了解多少
  • JS疑惑的数据类型及类型判断方法详解

javascript中的数据类型number

javascript中的数据类型number

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <script type="text/javascript">
 7             
 8             /*
 9              * 在JS中所有的数值都是Number类型,
10              *     包括整数和浮点数(小数)
11              * 
12              * JS中可以表示的数字的最大值
13              *     Number.MAX_VALUE
14              *         1.7976931348623157e+308
15              * 
16              *     Number.MIN_VALUE 大于0的最小值
17              *         5e-324
18              * 
19              *  如果使用Number表示的数字超过了最大值,则会返回一个
20              *         Infinity 表示正无穷
21              *         -Infinity 表示负无穷
22              *         使用typeof检查Infinity也会返回number
23              *  NaN 是一个特殊的数字,表示Not A Number
24              *         使用typeof检查一个NaN也会返回number
25              */
26             //数字123
27             var a = 123;
28             //字符串123
29             var b = "123";
30             /*
31                  可以使用一个运算符 typeof
32                      来检查一个变量的类型
33                  语法:typeof 变量    
34                  检查字符串时,会返回string
35                  检查数值时,会返回number
36              * */
37             //console.log(typeof b);
38             
39             a = -Number.MAX_VALUE * Number.MAX_VALUE;
40             
41             a = "abc" * "bcd";
42             
43             a = NaN;
44             
45             //console.log(typeof a);
46             
47             a = Number.MIN_VALUE;
48             
49             //console.log(a);
50             
51             /*
52              * 在JS中整数的运算基本可以保证精确
53              */
54             var c = 1865789 + 7654321;
55             
56             /*
57              * 如果使用JS进行浮点运算,可能得到一个不精确的结果
58              *     所以千万不要使用JS进行对精确度要求比较高的运算    
59              */
60             var c = 0.1 + 0.2;
61             
62             console.log(c);
63             
64             
65         </script>
66     </head>
67     <body>
68     </body>
69 </html>

 

JavaScript基本类型值-Number类型

JavaScript基本类型值-Number类型

大致介绍

在JavaScript的内部采用IEEE754格式来表示数字,所以不区分整数和浮点数,都是用64位浮点数的形式储存。就是说,在JavaScript内部,就根本没有小数。但是有些运算必须得需要整数完成,所以JavaScript有时会把64位的浮点数转换成32位的整数,再进行运算。

整数

JavaScript对整数提供四种表示方法:

1、二进制:有前缀0b的数值,出现0,1以外的数字会报错

2、八进制:有前缀0o的数值,或者是以0后面再跟一个数字(0-7)。如果超出了前面所述的数值范围,则会忽略第一个数字0,视为十进制数

注意:八进制字面量在严格模式下是无效的,会导致支持该模式的JavaScript引擎抛出错误

3、十六进制:有前缀0x,后跟任何十六进制数字(0~9及A~F),字母大小写都可以,超出范围会报错

4、十进制

rush:js;"> var num2 = 0b11; console.log(num2); //3 var num2 = 0b12; console.log(num2); //报错 var num8 = 0o76; console.log(num8); //02 var num8 = 0o78; console.log(num8); //报错 var num16 = 0x2a; console.log(num16); //42 var num16 = 0x2h; console.log(num16) //报错

浮点数

所谓浮点数,就是该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。与整数不同,浮点数只能用十进制来表示

浮点数的精度远远不如整数,所以设计浮点数的运算好比较要小心

例如:

rush:js;"> console.log(0.1 + 0.2 == 0.3); //false 0.30000000000000004 console.log(0.6/0.2); //2.9999999999999996

科学计数法

对于那些极大极小的数值,可以用e表示法(即科学计数法)表示的浮点数值表示。用e表示法表示的数值等于e前面的数值乘以10的指数次幂

以下两种情况,JavaScript会自动将数值转为科学计数法表示,其他情况都采用字面形式直接表示。

1、小数点前的数字多余21位

rush:js;"> console.log(1234567890123456789012);// 1.2345678901234568e+21 console.log(123456789012365648787); //123456789012365660000 

2、小数点后面的0多余5位

rush:js;"> console.log(0.0000006);//6e-7 console.log(0.000006); //0.000006

数值范围

由于内存的限制,ECMAScript并不能保存世界上所有的数值,所以就有了最大值和最小值

最小值保存在Number.MIN_VALUE中,这个值是5e-324

最大值保存在Number.MAX_VALUE,这个值是1.7976931348623157e+308

rush:js;"> console.log(Number.MIN_VALUE) //5e-324 console.log(Number.MAX_VALUE); //1.7976931348623157e+308

如果数字超过最大值,javascript会返回Infinity,这称为正向溢出(overflow);如果等于或超过最小负值-1023(即非常接近0),javascript会直接把这个数转为0,这称为负向溢出(underflow)

如果要想确定一个数值是不是有穷的,可以使用isFinite()函数。这个函数在参数位于最小与最大数值之间时会返回true

rush:js;"> var result = Number.MAX_VALUE + Number.MAX_VALUE; console.log(isFinite(result)); //false

特殊数值

1、+0和-0

这两个0在大对数的情况下都是等价的

rush:js;"> -0 === +0; //true 0 === -0; //true 0 === +0; //true

但是在作为分母的时候是不一样的

1/-0 == 1/+0; //false

Infinity表示“无穷”,用来表示两种场景。一种是一个正的数值太大,或一个负的数值太小,无法表示;另一种是非0数值除以0,得到Infinity。

rush:js;"> Math.pow(2,Math.pow(2,100));//Infinity 1/0;//Infinity

Infinity参与的运算结果只能是其本身、0或NaN

rush:js;"> * Infinity;//Infinity - Infinity;//-Infinity + Infinity;//Infinity / Infinity;//0 Infinity / 2;//Infinity Infinity * Infinity;//Infinity Infinity - Infinity;//NaN Infinity + Infinity;//Infinity Infinity / Infinity;//NaN

3、NaN

这个数值表示一个本来要返回数值的操作数未返回数值的情况

NaN与任何值不相等,包括它本身,并且涉及NaN的任何操作都会返回NaN

rush:js;"> 5 - 'x'; //NaN Math.acos(2); //NaN 0 / 0; //NaN NaN == NaN;//false NaN == Infinity;//false

NaN不是一种独立的数据类型,而是一种特殊数值,它的数据类型依然属于Number

typeof NaN; //number

isNaN方法可以用来判断一个值是否为NaN,但是,isNaN只对数值有效,如果传入其他值,会被先转成数值。比如,传入字符串的时候,字符串会被先转成NaN,所以最后返回true,这一点要特别引起注意。也就是说,isNaN为true的值,有可能不是NaN,而是一个字符串。

rush:js;"> isNaN('Hello') // true // 相当于 isNaN(Number('Hello')) // true

判断NaN更可靠的方法是,利用NaN是javascript之中唯一不等于自身的值这个特点,进行判断

rush:js;"> function isNaN(value){ return value != value; }

数制转换

有3个函数可以把非数值转换成数值:Number()、parseInt()和parseFloat()。其中Number()可以将任意类型的值转化成数值,而parseInt()和parseFloat()只应用于字符串向数字的转换

Number()

转换规则:

1、如果是Boolean值,true和false将分别转换为1和0

2、如果是null值,返回0

3、如果是undefined,返回NaN

4、如果是字符串,遵循以下规则:

(1)若字符串只包含十进制或十六进制数字,则转成十进制的数字

注意:Number()不识别八进制数字的字符串,会按照十进制数字处理

字符串'1.2.'不会报错,但数字1.2.会报错

(2)若字符串为空字符串或空格字符串,则转成0

(3)其他情况的字符串,则转成NaN

rush:js;"> Number(true) //1 Number(null) //0 Number(undefined) //NaN Number("0123") //123 Number("0x123") //291 Number("0.2") //0.2 Number("") //0 Number("asd") //NaN

parseInt()

parseInt()专门用于把字符串转换成整数。在转换字符串时,会忽略字符串前面的空格,直到找到第一个非空格字符。如果第一个字符不是数字字符或者负号,parseInt()就会返回NaN。如果是,则继续解析,直到解析完成或者遇到非数字字符

rush:js;"> console.log(parseInt(' 123.8px'));//123 console.log(parseInt(' 123.8 '));//123 console.log(parseInt(' -123.8px'));//-123 console.log(parseInt('a123.8px'));//NaN console.log(parseInt('0 123.8px'));//0

注意:在ECMAScript5中,parseInt()已经不具备解析八进制的能力。例如八进制“070”,会忽略前面的“0”,得到十进制的70

为了消除在使用parseInt()函数时可能导致的上述困惑,可以为这个函数提供第二个参数:转换时使用的基数(多少进制)

rush:js;"> parseInt("070") //70 parseInt("070",8) //56

parseFloat()

parseFloat()专门用于字符串转换浮点数。同样地,解析时会忽略字符串前面的空格,直到找到第一个非空格字符,然后一直解析到字符串末尾或一个无效的浮点数字字符为止

rush:js;"> console.log(parseFloat(' 0123.px'));//123 console.log(parseFloat(' 123.px'));//123 console.log(parseFloat(' 123.1px'));//123.1 console.log(parseFloat(' 123.1.2px '));//123.1 console.log(parseFloat(' -123.0px'));//-123 console.log(parseFloat('.123.1px'));//0.123 console.log(parseFloat('0 123px'));//0

注意:parseFloat()只解析十进制,所以十六进制的字符串始终会被转换成0。因此也没有第二个参数用来指定基数

parseFloat("0xA") //0

注意:Number('')的结果是0,parseInt('')和parseFloat('')的结果是NaN

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持小编!

JavaScript基础之数据类型

JavaScript基础之数据类型

JavaScript起源和特性

原型链是借鉴了Self和Smalltalk语言,所以JavaScript天生原型设计模式。new的原理是找到对象,通过克隆创建一个一模一样的对象,这里根对象是Object.prototype对象,所有对象都是从Object.prototype对象克隆而来。

可以用ECMAScript 5提供的Object.getPrototypeOf来查看着两个对象的原型

七种内置类型

  • 空值(null)
  • 未定义 (undefined)
  • 布尔值 (boolean)
  • 数字 (number)
  • 字符串 (string)
  • 对象 (object) 子类还有function、date、array等
  • 符号 (symbol ES6新增)

对于这些类型都比较常用,主要将下symbol,主要用于

Symbol 值通过Symbol函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。

  1. 定义对象属性的迭代器,遍历对象中的属性值
  2. 使用symbol.toStringTag来定义对象的toString结果
  3. 消除魔术字符串,比如状态变化是自己定义的几个字符串,最后也是对字符串进行比对,这时就可用Symbol消除魔法字符串。
const shapeType = {
  triangle: ''Triangle''
};
// 可以转换成
const shapeType = {
  triangle: Symbol()
};

function

function也是JavaScript的一个内置类型。是object的子类,有内部属性Call,该属性使其可以被调用。函数对象的length属性是其声明的参数个数

判断数据类型

typeof

typeof 5 // number
typeof ''xx'' //string
typeof undefined // undefined
typeof true // boolean
typeof Date // function

instanceof

用法:a instance b ,判断a是否为B的实例,即a的原型链上是否存在b的构造函数。 再来看个示例

5 instanceof Number //false  5是基本类型,不是Number构造函数构造出来的实例对象
new Number(5) instanceof number //true 

使用constructor 和Object.toString

称Object.prototype.toString为"万能方法" 用法

Object.prototype.toString.call(''xx'') //[object String]
Object.prototype.toString.call(null) // [object Null]
Object.prototype.toString.call([]) // [object Array]

使用constructor可以查看目标的构造函数

5..constructor // ƒ Number() { [native code] }
''林少''.constructor // ƒ String() { [native code] }

对于undefined和null,读取constructor属性会报错。

参考各种博客、《你不知道的JavaScript》、《前端开发核心知识进阶》

今天关于Javascript基础教程之数据类型 数值 Number的讲解已经结束,谢谢您的阅读,如果想了解更多关于JavaScript 中的数据类型Number、javascript中的数据类型number、JavaScript基本类型值-Number类型、JavaScript基础之数据类型的相关知识,请在本站搜索。

本文标签: