Ist %
Modulo?
Das hängt von der Sprache ab, die Sie verwenden. Aber im Allgemeinen Fließkommawerte weiß nicht Modulo-Operation. Sie können es selbst berechnen. Nehmen wir an, positive Gleitkommazahlen a=7.654
und b=10000.0
so
d = a/b = 0.0007654 // division
r = d-floor(d) = (0.0007654-0.0) = 0.0007654 // remainder
r = r*b = (0.0007654*10000.0) = 7.654 // rescale back
floor(x)
Runden bis auf nächste weniger oder gleich Anzahl an x
d
hält das schwebende Divisionsergebnis
r
den Rest hält (Modulo)
Ein anderes Beispiel a=123.456
und b=65
d = a/b = 1.8993230769230769230769230769231
r = (d-floor(d))*b = 58.456
Dies kann für ganzzahlige und Dezimalwerte a,b
verwendet werden, aber die Gleitkommaeinheit führt Runden und kann die Genauigkeit nach wenigen Stellen lose passen ... Wenn ich richtig 64-Bit-double
Variablen sind in der Regel verwendbar erinnern maximal bis zu 18
Ziffern.
[Edit1] hmm reeditiert Sie die Frage ganz anderes Problem
So suchen Sie nach modpow
. Sie können für Java-Implementierung von modpow
googlen. Zum Beispiel hier
Sie können Mine Implementierung in C++ auf 32-Bit-Integer-Arithmetik aber mit statischen Modul prim mit spezifischen Eigenschaften finden. Dennoch, wenn Sie alle
if (DWORD(d)>=DWORD(p)) d-=p;
zu d=d%p;
ändern würde es für jeden Modulo arbeiten. Sie werden modpow,modmul,modadd,modsub
benötigen.
verwenden hmm Sie die Frage neu aufgelegt, um ganz anderes Problem ... siehe [edit1] in meiner Antwort – Spektre