JavaScript原生对象之Number对象的属性和方法详解(2)

返回 NumberObject 的字符串表示,不采用指数计数法,小数点后有固定的 num 位数字。如果必要,该数字会被舍入,也可以用 0 补足,以便它达到指定的长度。如果 num 大于 le+21,则该方法只调用 NumberObject.toString(),返回采用指数计数法表示的字符串。

当 num 太小或太大时抛出异常 RangeError。0 ~ 20 之间的值不会引发该异常。有些实现支持更大范围或更小范围内的值。当调用该方法的对象不是 Number 时抛出 TypeError 异常。

复制代码 代码如下:


var n = 12345.6789;

console.log(n.toFixed());            //12346
console.log(n.toFixed(2));           //12345.68
console.log(n.toFixed(6));           //12345.678900
console.log((1.23e+20).toFixed(2));  //123000000000000000000.00
console.log((1.23e-10).toFixed(2));  //0.00

注意:由于对浮点数的处理,toFixed() 方法展现出的结果并不是所谓的“四舍五入”或者是“四舍六入五成双”,而是四舍,六入,五的表现十分混乱。

复制代码 代码如下:


//Chrome中
console.log(( 0.035 ).toFixed( 2 )); //0.04
console.log(( 0.045 ).toFixed( 2 )); //0.04

建议自己写方法来替换toFixed()默认行为,可以参考::

复制代码 代码如下:


Number.prototype.toFixed = function(len){
    var temp = Math.pow(10,len);
    var s = Math.ceil(this * temp)
    return s/temp;
}

console.log(( 0.035 ).toFixed( 2 ));  //0.04
console.log(( 0.045 ).toFixed( 2 ));  //0.05

toExponential()

toExponential() 方法可把对象的值转换成指数计数法。

NumberObject.toExponential(num)

参数num是可选的。规定指数计数法中的小数位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将使用尽可能多的数字。

返回 NumberObject 的字符串表示,采用指数计数法,即小数点之前有一位数字,小数点之后有 num 位数字。该数字的小数部分将被舍入,必要时用 0 补足,以便它达到指定的长度。

当 num 太小或太大时抛出异常 RangeError。0 ~ 20 之间的值不会引发该异常。有些实现支持更大范围或更小范围内的值。当调用该方法的对象不是 Number 时抛出 TypeError 异常。

复制代码 代码如下:


var num = 10000.1234;

console.log(num.toExponential());    //1.00001234e+4
console.log(num.toExponential(2));   //1.00e+4
console.log(num.toExponential(10));  //1.0000123400e+4

toPrecision()

toPrecision() 方法可将数值格式化为一个十进制数形式的字符串。

NumberObject.toPrecision(num)

参数num是可选的。用于控制数字的精度。该参数是 1 ~ 21 之间(且包括 1 和 21)的值。如果省略了该参数,则调用方法 toString(),而不是把数字转换成十进制的值。

复制代码 代码如下:


var num = 10000.1234;

console.log(num.toPrecision());    //10000.1234
console.log(num.toPrecision(2));   //1.0e+4
console.log(num.toPrecision(10));  //10000.12340

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgfzgy.html