在Java脚本中显示大十进制数

时间:2018-06-13 06:51:59

标签: javascript

我是javascript的新手,所以请原谅,如果这是毫无价值的问题。 但是,我有一个大的十进制数,我需要显示没有任何指数表示法。

例如var a = 0.00000000005545545468864654应显示为0.00000000005545545468864654而不是5.545545468864654e-11

任何人都可以帮我解决这个问题。

我尝试过以下方法

var a = 0.00000000005545545468864654
Number.parseFloat(a).toFixed(30)

其中30是小数位数。但这种方法不起作用并给出结果“0.000000000055455454688646537182”,这不是“0.00000000005545545468864654”

3 个答案:

答案 0 :(得分:0)

为什么只有26个十进制小数位。



var a = 0.00000000005545545468864654
console.log(Number.parseFloat(a).toFixed(26));




答案 1 :(得分:0)

如果您愿意,可以使用以下功能:

function toFixed(x) {
  if (Math.abs(x) < 1.0) {
    var e = parseInt(x.toString().split('e-')[1]);
    if (e) {
        x *= Math.pow(10,e-1);
        x = '0.' + (new Array(e)).join('0') + x.toString().substring(2);
    }
  } else {
    var e = parseInt(x.toString().split('+')[1]);
    if (e > 20) {
        e -= 20;
        x /= Math.pow(10,e);
        x += (new Array(e+1)).join('0');
    }
  }
  return x;
}

const num = 0.00000000005545545468864654;

console.log(toFixed(num))

答案 2 :(得分:0)

精度是十进制数的二进制表示的内在问题。有技术和精密设定器只能达到一定的精度。然后限制被击中。这不是一个可以解决的问题,但解决方法包括:

  • 将每个数字转换为int并将它们分开,使用toString打印,定义自定义操作
  • 在执行操作之前乘以十进制数字块然后再划分,这可能会或可能不会起作用,可能会或可能不会缩放。这包括通过乘以10的幂来将数字转换为整数。

当然,已经建立了图书馆来解决这个问题。校验 BigNumbers基于decimaljs