JavaScript数字
不同于C/C++, JavaScript只有一种数值类型 , 始终是64位的浮点数 ,采用国际IEEE 754标准,书写时可以为小数,也可以为整数, 过大或者过小的数字可以使用科学计数法来写 ,写为aeb的形式。
更仔细来说,这种格式采用64位存储数值,0到51位存储数字,52到62位存储指数,63位存储符号。
如果不使用指数或者科学计数法,那么对于整数将精确至15位,小数部分最大数是17位,但是对于小数的存储,计算机总是不能完全准确,只是以很小的范围内的误差中的数来拟合。
对于字符串数字级联问题,前边说过。另外, 在JavaScript中,语句是从左向右编译的 ,因此运算也是这样,而且,在运算过程中, JavaScript会尝试将字符串转化为数字来运算 ,因此,如果字符串是由数字组成的字符串,那么可以用来计算, 但是 这种情况不包括加法运算符带来的级联。
JavaScript中有一个保留词NaN(Not a Number)表示非数值,指出来某个 数 不是合法数,如果用非数字字符串和数字进行运算,那么得到的结果就是NaN,可以使用JavaScript的一个全局函数isNaN()来确定某个值是不是合法数,如果这个数是NaN,那么返回真。 数值与NaN运算的结果也是NaN。 如果是数字字符串应该会发生级联。NaN实际上也是一种数,对其使用typeof得到的返回值将是number。
Infinity或者前面加一个负号,表示在计数时超过最大可能数范围时返回的值,比如说除以0、一直令数字增大减小,这个关键字实际上也是一个数,对他的typeof将返回number。
与其他某些编译器一样,如果数字前缀0x表示十六进制,前缀0表示八进制,默认为十进制。 可以使用toString()方法将数值输出为自定义进制数。
数值也可以通过new关键词来声明为对象,和对string类型描述的时候一样,最好不这样做。
JavaScript数字方法
原始值无法拥有属性和方法,但是通过JavaScript,方法和属性可以用于原始值,在JavaScript执行方法和属性时将原始值视为对象。
方法 | 描述 |
---|---|
toString() | 以字符串返回数值 |
toExponential() | 返回字符串值,返回一个数值的 指数计数法,可以添加参数表示保留几位小数, 会自动四舍五入,如果没有设置参数,不会四舍五入 |
toFixed() | 返回字符串值,接受一个指定小数个数的参数,会四舍五入 |
toPrecision() | 返回字符串值,接受一个指定数字整体长度的参数,可以省略 省略返回原来的数字 |
valueOf() | 以数值返回数值,可以将Number对象返回为原始值 (所有JavaScript数据类型都有valueOf()和toString()方法) |
分类 | 方法 | 描述 | 注意 |
---|---|---|---|
把变量转换为数值 | Number() | 把JavaScript变量转换为数值 也可以把日期转换为数字,表示距离1970年开始的毫秒数 | 如果无法转换则返回NaN 并且这三种方法是全局方法而非数字方法 可用于所有JavaScript数据类型 |
parseFloat() | 解析一段字符串并返回数值。允许空格。只返回首个数字 | ||
parseInt() |
数字属性
属性 | 描述 |
---|---|
MAX_VALUE | 返回JavaScript中可能的最大数 |
MIN_VALUE | 返回JavaScript中可能的最小数 |
NEGATIVE_INFINITY | 当一个数值过小超出范围时返回这个属性 |
NaN | 表示非数字 |
POSITIVE_INFINITY | 当一个数值过大超出范围时返回这个属性 |
数值属性名为number的JavaScript数字对象包装器
这些属性只能作为Number.MAX_VALUE来访问,不可使用变量、表达式或者值来访问,如果这样的话将返回undefined
小应用
toString() :
toExponential() :
toFixed() :
toPrecision() :
valueOf() :
Number() :
parseInt() parseFloat() :
数字属性 :