Как объяснено в в этом вопросе , поведение JavaScript по умолчанию для преобразования чисел с плавающей запятой в десятичное (при преобразовании в строку, для отображения, печати или других целей) заключается в использовании достаточного количества цифр дляоднозначно определить значение с плавающей запятой.
В 1000.56 * 10
возникают две ошибки округления.Первое происходит, когда 1000.56
конвертируется в число с плавающей запятой.Второе происходит, когда умножение выполняется.Две ошибки также встречаются в 100.56 * 10
.Однако ошибки оказываются частично отмененными (они имеют противоположные направления, что является фактически случайным следствием того, где лежат представимые значения), и результат достаточно близок к 1005.6, чтобы алгоритм форматирования JavaScript использовал «1005.6» для результата.
В 1000.56 * 10
результат не был представимым числом с плавающей точкой, ближайшим к 10005.6, поэтому JavaScript использовал дополнительные цифры для его различения.