使用小数打印浮点值而不是使用JavaScript中的电子表示法

时间:2013-05-09 19:18:16

标签: javascript

当我在JavaScript中打印像0.0000001这样的浮点时,它会给我

 1e-7

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

3 个答案:

答案 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"