这是一个场景:我在应该得到1.0
的时候却得到了.9999999999999999
。
我可以承受损失一个小数位的精度,所以我使用.toFixed(15)
,这是一种有效的方法。
四舍五入可以工作,但问题是我得到的是1.000000000000000
。
有没有办法舍入到小数点后的几位,但去掉额外的空格?
注意:.toPrecision
不是我想要的;我只想指定小数点后有多少个数字。
注2:我不能只使用.toPrecision(1)
,因为我需要保持小数点后实际数据的高精度。理想情况下,需要的小数位数应该是一样多(最多15位)。
发布于 2011-09-06 04:37:14
>>> parseFloat(0.9999999.toFixed(4));
1
>>> parseFloat(0.0009999999.toFixed(4));
0.001
>>> parseFloat(0.0000009999999.toFixed(4));
0
发布于 2011-09-06 04:38:59
是的,有一种方法。使用parseFloat()
。
parseFloat((1.005).toFixed(15)) //==> 1.005
parseFloat((1.000000000).toFixed(15)) //==> 1
在这里看一个活生生的例子:http://jsfiddle.net/nayish/7JBJw/
发布于 2011-09-06 04:41:31
据我所知,您希望删除通过toFixed()
获得的字符串中的尾随零。这是一个纯字符串操作:
var x = 1.1230000;
var y = x.toFixed(15).replace(/0+$/, ""); // ==> 1.123
https://stackoverflow.com/questions/7312468
复制相似问题