Как округлить до 2 десятичных знаков с префиксом формата SI? - PullRequest
3 голосов
/ 10 апреля 2019

Пример в моем случае:

d3.format("~s")(656628); //656.628k

Но мой ожидаемый результат: 656,63k

Я бы хотел использовать опцию формата d3 вместо ручной обработки.

Тест в реальном времени: https://npm.runkit.com/d3-format

1 Ответ

3 голосов
/ 11 апреля 2019

Все, что вам нужно, это d3.formatPrefix, который ...

Преобразование значений в единицы соответствующего префикса SI для указанного числового эталонного значения перед форматированием в фиксированныйобозначение точки.

..., с ".2" в качестве спецификатора и вашим собственным номером в качестве значения.

Вот демоверсия с вашим номером:

const myNumber = 656628;
console.log(d3.formatPrefix(".2", myNumber)(myNumber));
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>

Это дает ожидаемый результат: 656.63k.

И, для полноты, некоторые другие цифры:

[1232, 7676546655, 665, 0.0012, 8887878].forEach(function(d) {
  console.log("Number: " + d + " - Your format: " + d3.formatPrefix(".2", d)(d))
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
...