Остаток экспоненциального числа в Javascript - PullRequest
0 голосов
/ 09 апреля 2020

Как часть решения мне нужно многократно находить остатки. Оператор% работает нормально, если это небольшое число или число не в форме экспоненты. Но я думаю, что после 1e+22, если я попытаюсь найти остаток с помощью оператора%, это даст странные ответы. Так что, если я попробую это с 1e+100, я получу это

1e+100 % 10 
4

В идеале я должен получить 0. Я не могу понять, откуда эти 4? Я думал, что это может быть из мантиссы или экспоненты, но ни один не дает 4. И во-вторых, как я должен go взять остаток от такого большого числа? Извините, если это очень тупой вопрос, но я не могу понять это. Так что помощь будет оценена.

1 Ответ

3 голосов
/ 10 апреля 2020

Когда исходный текст 1e100 преобразуется в число с плавающей запятой, результат равен 5147557589468029 • 2 280 (53-разрядное число, умноженное на степень два, потому что это формат используется), который является 10000000000000000159028911097599180468360808563945281389781327557747838772170381060813469985856815104. Остальной части этого по модулю 10 не равно 4.

*

После того, как 1006 * анализируются, в исходном тексте и преобразуются в плавающую точку, то результат будет 10000000000000000159028911097599180468360808563945281389781327557747838772170381060813469985856815104, нет никакого способа для Javascript программа для узнавания оригинальной цифры, представленной 10 100 . Таким образом, нет способа вычислить остаток по модулю 10 от исходного числа. Чтобы сделать это, вы должны работать с числом в другом формате, например, строкой десятичных цифр, используя свои собственные арифметические процедуры c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...