0.0000001
当我像在 JavaScript 中打印浮点数时,它给了我
1e-7
我怎样才能避免这种情况,而是“正常”打印它?
你可以使用这个:
var x = 0.00000001;
var toPrint = x.toFixed(7);
这设置为小数点右侧 7 位toPrint
的字符串表示形式。x
要使用它,您需要知道需要多少位精度。如果您不想要它们,您还需要修剪掉任何尾随的 0 数字(例如,如果x
是 0.04)。
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;
}
我有一个看似有效的简单解决方案。
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"
.