Точность целочисленного деления в JS - PullRequest
1 голос
/ 04 апреля 2019

Если a и b являются положительными целыми числами, меньшими Number.MAX_SAFE_INTEGER и a делится на b, гарантируется ли, что console.log(a / b) выведет целое число (а не, скажем, число, которое заканчивается в .9999999999)? Кроме того, a % b === 0 всегда будет держаться?

1 Ответ

2 голосов
/ 04 апреля 2019

Как минимум, основываясь на стандарте ECMAScript, правила apply / operator отмечают, что язык не выполняет целочисленное деление и в типичном случае вычисляется частное и округляется до ближайшего представимого значения, используя округление IEEE 754-2008 до ближайшего, привязывается к четному режиму .

Следовательно, если числитель (в пределах безопасных границ) равномерно делится на ненулевой знаменатель, результатом обязательно является математическое целое число, поскольку IEE 754-2008 может представлять его как единое целое.

То же самое для %, который в такой ситуации даст 0.

...