Salve a tutti...
qualcuno sa se esiste un formato più lungo del double???
Vi spiego... devo calcolare il fattoriale di una variabile n con n che può arrivare anche a 500 ma se ne va in overflow....
Salve a tutti...
qualcuno sa se esiste un formato più lungo del double???
Vi spiego... devo calcolare il fattoriale di una variabile n con n che può arrivare anche a 500 ma se ne va in overflow....
Ciao, gli intervalli di double e Long sono:
'double = -1,79769313486232E308 e -4,94065645841247E-324 per i valori negativi
4,94065645841247E-324 e 1,79769313486232E308 per quelli positivi
'Long = intervallo fra -2.147.483.648 e 2.147.483.647.
Con double é difficile che vada in overflow. Comunque se sei sicuro che NON si tratta di una funzione ricorsiva, prova a dividere il numero di base per 1.000.000 o più, per poi moltiplicarlo per lo stesso fattore.![]()
LM
Allora.... ho provato come hai detto tu... la funzione è la seguente:
Public Function factorial(ByVal n As Double)
fattor = n / 1000000
If n = 0 Then
factorial = 1
Else
For Index = n - 1 To 1 Step -1
fattor = fattor * Index
Next Index
factorial = fattor * 1000000
End If
End Function
Ma va comunque in overflow... l'errore me lo da in
fattor = fattor * Index
Se invece text1.text è molto grande (ca 100) lo da qui
num = (CInt(Text1.Text) ^ CInt(Text2.Text)) / factorial(ByVal x)