Я хочу использовать Excel для умножения 32-битных целых и получения младших 32-битных. Другими словами, учитывая числа n1, n2, я хочу вычислить MOD(n1 * n2, 2 ^ 32). Однако эта формула не работает в Excel, потому что (для больших n1 и n2) продукт превосходит точность Excel и поэтому округляет младшие цифры. Есть ли способ для меня, чтобы избежать этого при использовании Excel?

Одним из примитивных решений, которое мне удалось найти, было просто разделить одно из чисел на 8-битные куски и соответствующим образом умножить (используя MOD, когда это необходимо для усечения), но я надеюсь найти что-то менее запутанное, надеюсь.

2 ответа2

1

Если вы посмотрите на спецификации и ограничения, то обнаружите, что, по крайней мере, начиная с Excel 2007, были установлены следующие ограничения:

Точность номера 15 цифр

Наименьшее допустимое отрицательное число -2.2251E-308

Наименьшее допустимое положительное число 2.2251E-308

Максимально допустимое положительное число 9.99999999999999E+307

Максимально допустимое отрицательное число -9,9999999999999E+307

Максимально допустимое положительное число по формуле 1.7976931348623158e+308

Максимально допустимое отрицательное число по формуле -1.7976931348623158e+308

Как вы можете видеть, вы неизбежно потеряете точность в зависимости от используемых вами чисел.

Поскольку вы указали 32-разрядные числа (при условии, что целые числа без знака), максимальное значение, которое вам нужно будет вычислить, будет 18,446,744,073,709,551,616 (2 ^ 32 * 2 ^ 32 = 2 ^ 64), что явно превышает предел в 15 цифр, хотя это не так. превышать предел максимального числа, которое можно вычислить.

Кроме того, вы планируете получить младшие 32 бита результата, вероятно, для такого вычисления было бы лучше прибегнуть к реальному языку программирования или скриптового языка.

0

Одним из примитивных решений, которое мне удалось найти, было просто разделить одно из чисел на 8-битные куски и соответствующим образом умножить (используя MOD, когда это необходимо для усечения), но я надеюсь найти что-то менее запутанное, надеюсь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .