将JavaScript中的十进制数字表示为C中的“%g”格式

时间:2019-04-16 11:00:20

标签: javascript string floating-point

我有一个生成为有限小数的数字:

var x = k * Math.pow(10,p)

具有k和p整数。有没有简单的方法可以将其转换为精确的字符串表示形式?

如果我使用隐式字符串转换,则会得到难看的结果:

""+ 7*Math.pow(10,-1)

给予

"0.7000000000000001"

我尝试使用.toFixed和.toPrecision,但是很难找到根据k和p使用的正确精度。有没有办法获取旧的C语言“%g”格式?也许我应该求助于外部图书馆?

2 个答案:

答案 0 :(得分:1)

一个人可以使用math.js库中的math.format

math.format(7 * Math.pow(10, -1), {precision: 14});

给予

"0.7"

答案 1 :(得分:0)

您可以使用选项floor

来创建自己的accuracy函数

  function fixRound(number, accuracy) {

      return ""+Math.floor(number * (accuracy || 1)) / accuracy || 1;

  }

  let num = 7 * Math.pow(10, -1);

  console.log(fixRound(num, 1000))