当我在JavaScript中打印像0.0000001
这样的浮点时,它会给我
1e-7
我怎样才能避免这种情况,而是“正常”打印出来?
答案 0 :(得分:4)
您可以使用:
var x = 0.00000001;
var toPrint = x.toFixed(7);
这将toPrint
设置为x
的字符串表示形式,小数点右侧有7位数字。要使用它,您需要知道所需的精度位数。如果你不想要它们,你还需要修剪任何尾随的0位数(比如,如果x
是0.04)。
答案 1 :(得分:1)
function noExponent(n){
var data= String(n).split(/[eE]/);
if(data.length== 1) return data[0];
var z= '', sign= +n<0? '-':'',
str= data[0].replace('.', ''),
mag= Number(data[1])+ 1;
if(mag<0){
z= sign + '0.';
while(mag++) z += '0';
return z + str.replace(/^\-/,'');
}
mag -= str.length;
while(mag--) z += '0';
return str + z;
}
答案 2 :(得分:0)
我有一个似乎有效的简单解决方案。
var rx = /^([\d.]+?)e-(\d+)$/;
var floatToString = function(flt) {
var details, num, cnt, fStr = flt.toString();
if (rx.test(fStr)) {
details = rx.exec(fStr);
num = details[1];
cnt = parseInt(details[2], 10);
cnt += (num.replace(/\./g, "").length - 1); // Adjust for longer numbers
return flt.toFixed(cnt);
}
return fStr;
};
floatToString(0.0000001); // returns "0.0000001"
编辑更新它以使用toFixed
(没想到)。
编辑2 已更新,因此它会正确显示数字0.0000000123
,而不是切断并显示"0.00000001"
。