представлять десятичные числа в JavaScript как форматирование "% g" в C - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть число, сгенерированное в виде конечного десятичного числа:

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

с k и p целыми числами.Есть ли простой способ преобразовать его в точное строковое представление?

Если я использую преобразование имплицитной строки, я получаю ужасные результаты:

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

дает

"0.7000000000000001"

Я пытался использовать .toFixed и .toPrecision, но это очень сложнонайти правильную точность в зависимости от k и p.Есть ли способ получить старое доброе "% g" форматирование языка Си?Может мне прибегнуть к внешней библиотеке?

Ответы [ 2 ]

1 голос
/ 16 апреля 2019

Можно использовать math.format из math.js библиотека:

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

дает

"0.7"
0 голосов
/ 16 апреля 2019

Вы можете создать свою собственную функцию 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))
...