Home > Enterprise >  VBA Modulo Operation on large decimal numbers
VBA Modulo Operation on large decimal numbers

Time:01-05

i am trying to calculate: A random number in the range 10^25 mod a random number in the range of 100. I saved the first random number as a Variant because the number is too big to be saved as an Integer.

The result of the solution should be something between 1 and 100, so it could be saved as an Integer.

My idea is to break down the numbers into smaller numbers (prim factorisation) and calculate the modulo on smaller numbers, so we don't need to calculate in the range of 10^25.

For example calculation: 300400000717120000131495 mod 97 = 1 How to calc this by using VBA.

Thank you in advance. Fabian

CodePudding user response:

Does this work for you?

Sub test_this()
    Debug.Print find_modulus("300400000717120000131495", 97)
End Sub

Function find_modulus(large_number As String, divisor As Long)
    Dim quotient As Variant, integer_quotient As Variant
    quotient = CDec(large_number)
    integer_quotient = Int(quotient / divisor) * divisor
    find_modulus = quotient - integer_quotient
End Function

(Variable names changed to make more sense.)

  • Related