1. 使用Math
对象的属性
1.1 Math.ceil()
Math.ceil()
函数返回大于或等于一个给定数字的最小整数。
语法:var re = Math.ceil(x);
参数:x
必须为数字或字符串形式数字如'2'
返回值:满足参数要求则返回对应整数,否则返回NaN
Math.ceil(); // NaN
Math.ceil(''); // 0
Math.ceil(' '); // 0
Math.ceil(1.5); // 2
Math.ceil(1.4); // 2
Math.ceil('1.5'); // 2
Math.ceil('1.4'); // 2
Math.ceil('a'); // NaN
1.2 Math.floor()
Math.floor()
返回小于或等于一个给定数字的最大整数。
语法:var re = Math.floor(x);
参数:x
必须为数字或字符串形式数字如'2'
返回值:满足参数要求则返回对应整数,否则返回NaN
Math.floor(); // NaN
Math.floor(''); // 0
Math.floor(' '); // 0
Math.floor(1.5); // 1
Math.floor(1.4); // 1
Math.floor('1.5'); // 1
Math.floor('1.4'); // 1
Math.floor('a'); // NaN
1.2 Math.round()
Math.round()
返回一个数字四舍五入后最接近的整数。
语法:var re = Math.round(x);
参数:x
必须为数字或字符串形式数字如'2'
返回值:满足参数要求则返回对应整数,否则返回NaN
描述:
- 参数小数部分大于
0.5
,则入:Math.round(0.6); // 1
- 参数小数部分小于
0.5
,则舍:Math.round(0.4); // 0
- 参数小数部分等于
0.5
,则往正无穷方向上取最近的一个整数:Math.round(0.5); // 1
Math.round(-0.5); // -0
Math.round(); // NaN
Math.round(''); // 0
Math.round(' '); // 0
Math.round(1.4); // 1
Math.round(1.5); // 2
Math.round(-1.5); // -1
Math.round(1.6); // 2
Math.round('1.4'); // 1
Math.round('1.5'); // 2
Math.round('-1.5'); // -1
Math.round('1.6'); // 2
Math.round('a'); // NaN
2. 使用js
内置对象parseInt
MDN 官方文档:parseInt
parseInt(string, radix)
解析一个字符串并返回指定基数的十进制整数, radix
是2-36
之间的整数,表示被解析字符串的基数。
语法:var re = parseInt(str, radix);
参数:
str
必须为数字或数字和字母[0-9a-zA-Z]
组成的字符串如's2'
'3a'
如果参数不是一个字符串,则将其转换为字符串(使用ToString
抽象操作)
允许前导和尾随空格radix
可选,表示字符串基数,范围从2
到36
,36
代表10
个数字和26
个字母36 = 10 + 26
若radix
为36
表示第一个字符串参数为36
进制的,范围从[0-9a-yA-Y]
,没有字母z
,以此类推
使用该函数时最好写上第二个参数radix
返回值:满足参数要求则返回对应整数,否则返回NaN
,如果第一个字符不能转换为数字,parseInt
会返回 NaN
。
关于radix
的取值:
如果 radix
是 undefined
、0
或未指定的,JavaScript
会假定以下情况:
- 如果输入的
string
以 "0x
"或 “0X
”(一个0
,后面是小写或大写的X
)开头,那么radix
被假定为16
,字符串的其余部分被当做十六进制数去解析。 - 如果输入的
string
以"0"(0)
开头,radix
被假定为8
(八进制)或10
(十进制)。具体选择哪一个radix
取决于实现。ECMAScript 5
澄清了应该使用10
(十进制),但不是所有的浏览器都支持。因此,在使用parseInt
时,一定要指定一个radix
。 - 如果输入的
string
以任何其他值开头,radix
是10
(十进制)。
要将一个数字转换为特定的 radix
中的字符串字段,请使用 thatNumber.toString(radix)
函数。
parseInt
取整原理
小数包含小数点字符,即.
,而parseInt
遇到该小数点时就停止后面的解析工作,返回小数点前的解析结果
parseInt
认识+
和-
运算符
parseInt(3.2, 10); // 3
parseInt('3.8', 10); // 3
parseInt(-3.2, 10); // -3
parseInt(+3.2, 10); // 3
parseInt('z',36); // 35
/*
或者 NaN,当:
radix 小于 2 或大于 36 ,或
第一个非空格字符不能转换为数字
*/
parseInt('a', 10); // NaN
parseInt('2a', 10); // 2 此时进制为 10 则 parseInt 对象不认识 a,忽略 a
parseInt('2a', 11); // 32 此时进制为 11 则 a 为 10,11 = 2 * 11^1 + 10 * 11^0
parseInt('a', 11); // 10