问题描述
小程序js中某个数字是3.1415926,但是我们需要用于计算的只是3.14,那么应该实现呢?
toPrecision()
1.定义
- 在对象的值超出指定位数时将其转换为指数计数法。
2.语法
- number.toPrecision(x)
3.参数
- x:必需,规定必须被转换为指数计数法的最小位数。该参数是 1 ~ 21 之间(且包括 1 和 21)的值。有效实现允许有选择地支持更大或更小的 num。如果省略了该参数,则调用方法toString(),而不是把数字转换成十进制的值。
4.返回值
- 类型:String, 指定精度的数字格式
5.实例
测试代码
var num = new Number(13.3714);
var numx=new Number(13.3114)
var a = num.toPrecision();
var b = num.toPrecision(2);
var c = num.toPrecision(3);
var cc=numx.toPrecision(3);
var d = num.toPrecision(10);
console.log("num="+num)
console.log("a="+a)
console.log("b="+b)
console.log("c="+c)
console.log("cc="+cc)
console.log("d="+d)
结果
6.小结
number.toPrecision(x)就是将number转换为含有x位数的string符号,采用了四舍五入。比如示例中的13.3714和13.3114只保留三位数字时,需要用到四舍五入。如果x大于了number本来的位数,则填充0,使得string为x位。
toFixed()
1.定义和用法
- 把 Number 四舍五入为指定小数位数的数字。
2.语法
- NumberObject.toFixed(num)
3.参数
- num: 必需,规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0代替。
4.返回值
- 返回 NumberObject 的字符串表示,不采用指数计数法,小数点后有固定的 num 位数字。如果必要,该数字会被舍入,也可以用 0补足,以便它达到指定的长度。如果 num 大于 le+21,则该方法只调用 NumberObject.toString(),返回采用指数计数法表示的字符串。
5.抛出
- 当 num 太小或太大时抛出异常 RangeError。0 ~ 20 之间的值不会引发该异常。有些实现支持更大范围或更小范围内的值。当调用该方法的对象不是 Number 时抛出 TypeError 异常。
6.示例
测试代码
var num = new Number(13.3714);
var numx=new Number(13.3114)
var a = num.toFixed();//默认保留0位小数 注意是小数 13
var b = num.toFixed(2);//保留2位小数 13.37
var c = num.toFixed(3);//保留3位小数 13.371
var cc = numx.toFixed(3);//保留3位小数 13.311
var d = num.toFixed(10);//保留10位小数 不足用0填充
console.log("num="+num)
console.log("a="+a)
console.log("b="+b)
console.log("c="+c)
console.log("cc="+cc)
console.log("d="+d)
结果
7.小结
NumberObject.toFixed(num)也是满足四舍五入的语法的,参数num的意思是保留几位小数。返回值类型是string。
总结
toPrecision()和toFixed()都是将number类型的数字截取为某一精度的函数,而且返回值都是string【可以查看JavaScript官方文档验证或开发工具测试】,而且都具有四舍五入的语法。区别就是toPrecision()是一共保留几位数字,而toFixed()却是保留几位小数点后面的数字。当然,位数不足时都是用0填充(^ o ^)/~