1

0.0000001当我像在 JavaScript 中打印浮点数时,它给了我

 1e-7

我怎样才能避免这种情况,而是“正常”打印它?

4

3 回答 3

4

你可以使用这个:

var x = 0.00000001;
var toPrint = x.toFixed(7);

这设置为小数点右侧 7 位toPrint的字符串表示形式。x要使用它,您需要知道需要多少位精度。如果您不想要它们,您还需要修剪掉任何尾随的 0 数字(例如,如果x是 0.04)。

于 2013-05-09T19:23:24.257 回答
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;
}
于 2013-05-09T21:00:44.123 回答
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".

于 2013-05-09T19:27:35.050 回答