Я не могу найти, как вычисляется количество десятичных знаков в JavaScript при преобразовании в строку.
Я хочу передавать числа через JSON, но JSON.stringify
генерирует разную длину для десятичных знаков.
Например:
JSON.stringify(Math.PI).length // 17 (15 decimal places)
JSON.stringify(1/3).length // 18 (16 decimal places)
JSON.stringify(0.1 + 0.2).length // 19 (17 decimal places)
То же самое происходит, если я конвертирую в строку (например, String(1/3).length
), поэтому похоже, что JSON.stringify
под обложками преобразуется в строку.
Я пробовал это на chrome, firefox и node, и представление согласовано, поэтому оно не похоже на какую-то причуду консоли.
Вернемся к моему первоначальному вопросу (но немного перефразированному):
Как рассчитывается максимальное количество знаков после запятой в JavaScript при преобразовании числа в строку?
String(Math.PI) !== String(Math.LN2)
. - person Artur Carvalho   schedule 27.04.2021