В 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 .