JavaScript数值类型整理之数值类型简介

 2015年04月25日    285     声明


最近工作中总要用到Javascript处理订单金额计算相关的情况,而Javascript并不擅长浮点数计算。在我工作的项目中,数据存储使用了PostgreSQL,后端代码使用Node.js。而Node.js读PostgreSQL的numeric数据类型,读出的是字符串类型,因此要对结果做一些处理,由于涉及金额相关计算,又需要对数值做一些取舍。在此,整理下Javascript的数值类型及相关计算的知识,本篇为:数值类型简介


ECMAScript中使用IEEE754格式来表示整数和浮点数类型。为支持不进制的数值类型,ECMA-262定义了不同的数值字面量。

整数类型

十进制整数的直接书写,即前面不带0或0x,格式如下:

var intNum = 45;      //十进制整数

八进制数的表示,以0开头,其后是数字0〜7。字面值超出范围时,前导符零将被忽略,后面的数据将被当做十进制处理,格式如下:

var octalNum1 = 073;             //八进制(十进制的59)
var octalNum1 = 078;             //无效的八进制,相当于十进制的78

八进在严格模式下是无效,会抛出错误,在使用时应该注意。

十六进制数表示,以0x开冰,其后是数据0~9及A~F,字母不区分大小写。

var hexNum1 = 0X73;            //相当于十进制的115
var hexNum2 = 0x2C;            //相当于十进制的78


浮点数类型

ECMAScript中,浮点数类型的类值中必须包含一个小数点,并且小数点后必须有一位数字。浮点数值需要的内存空间,是整数类型数值的两倍,ECMAScript会在适当的时候将浮点数转换为整数。浮点数支持科学计数法(e)表示。格式如下:

var floatNum1 = 1.1;
var floatNum2 = 1.0; 		//将被解析为整数1
var floatNum3 = .2;			//有效,不推荐使用
var floatNum4 = 1.1e3; 		//科学计数法相当于1100