Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Visual Basic: Общие вопросы > Большие числа: точность расчёта


Автор: BlackSun 09.02.21, 05:23
Необходимо вычислить 97^4464/98^4464. Чтобы избежать переполнения, делаю так:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    Dim Res As Double, iI2 as Integer
        Res = 1
        For iI2 = 1 To 4464
         Res = Res * (97 / 98)
        Next
    Debug.Print Res
     
        Res = 1
        For iI2 = 1 To 4464 / 48 Step 48
         Res = Res * (97 ^ 48 / 98 ^ 48)
        Next
    Debug.Print Res

Результаты сильно разнятся. Где точнее рез-т?

Автор: Mikle 09.02.21, 05:41
Во втором варианте ошибка, должно быть так:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
      For i = 1 To 4464 / 48
        Res = Res * (97 ^ 48 / 98 ^ 48)
      Next

Но лучше так:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
      Debug.Print (97 / 98) ^ 4464

Автор: BlackSun 09.02.21, 06:59
Да, вчера пересидел за компом, спс.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)