Как преобразовать число с плавающей запятой с 8 точками после запятой в JavaScript - PullRequest
0 голосов
/ 16 марта 2019

Как я могу преобразовать число, входное значение из моего контрольного примера, которое будет иметь целочисленное значение или число с плавающей запятой, в число с плавающей запятой / строку всегда с 8 десятичными знаками?скажем, например, если мой ввод 3, то я должен преобразовать в «3,00000000», если мой ввод 53,678, то я должен преобразовать в «53,66700000».Я гуглил и пробовал с несколькими типами преобразования, такими как синтаксический анализ, toPrecision (), но не смог преобразовать его.Любая помощь очень ценится.

expect(a).to.equal(b) // a and be should be of same number with types too
expect(a).to.equal(b)

1 Ответ

0 голосов
/ 16 марта 2019

В JavaScript Number равно с плавающей запятой двойной точности.
Его точность не может быть выражена в десятичных разрядах , она варьируется в зависимости от того, насколько велико число. Например, выше Number.MAX_SAFE_INTEGER точность составляет «меньше 0 десятичных знаков»:

const large = 9007199254740992;
const larger = large + 1;
console.log(large === larger);

Чтобы преобразовать Number в String с фиксированным количеством десятичных разрядов, используйте .toFixed(), как подсказывает @epascarello:

const input = 3;
const str = input.toFixed(8);
console.log(str);

Что касается финансовых расчетов, некоторые говорят, что вы никогда не должны использовать плавающие объекты IEEE 754 (такие как Number s в JavaScript), хотя многие крупнейшие финансовые компании делают именно это.
Чтобы быть в безопасности, используйте библиотеку bignum , например big.js .

...