toPrecision是否像round一样toString?

时间:2017-03-16 15:03:59

标签: javascript

toPrecision的返回值为“字符串...以定点或指数表示法舍入到精确有效数字。”

8.235 => “8.23”不是四舍五入。为什么不同?

var toP = function (n) {
    console.log(n, n.toPrecision(3) );
}
    
toP(1.235);  // 1.235 "1.24"
toP(2.235);
toP(3.235);
toP(4.235);
toP(5.235);
toP(6.235);
toP(7.235);
toP(8.235);  // 8.235 "8.23"  why?
.as-console-wrapper{min-height:100%}

1 个答案:

答案 0 :(得分:3)

与往常一样,它的浮点(in)准确性应该归咎于此。

1.235二进制是1.0011110000101000111101011100001010001111010111000011 ...
截断并转换回十进制,你得到1.235000000000000098,这确实是圆形的。

但8.235是1000.0011110000101000111101011100001010001111010111 ...
截断并转换回十进制,得到8.234999999999999432,向下舍入。