Moin,
Anbei ist eine UDF die intern mit folgender Schreibweise Arbeitet: 1e10.994604967679 statt 9.8765432e10. Die "Zahl" wird als als Logarithmus zur Basis 10 gespeichert. Die eigentliche Zahl ergibt sich damit zu Sign * 10 ^ Double. Mit dieser Schreibweise lassen sich relativ große (1e99999 z.B.) und auch sehr kleine Zahlen gut darstellen. Für exakte Ergebnisse ist diese Methode natürlich ungeeignet, da ist es besser mit BigInt oder BigNum zu rechnen, aber wenn die Genauigkeit "nur so pi mal 7 Nachkommastellen" stimmen muss, dann findet man hier vielleicht was man sucht.
Ich habe die UDF vorerst "ENumber" getauft (wollte eigentlich BigNum, aber das gibt es ja schon ), oder LogNum (aber das klang irgendwie doof). Also ist es jetzt ENum (E = exponential), damit ist der Name wenigstens "fast" richtig.
In der UDF sind einige Rechenmethoden (+ - * / ^ etc) enthalten. Fortschreitendes wie Fakultät, Binomialkoeffizient, uvm. habe ich aber noch nicht angefasst, da mir das auch zu viel Arbeit ist "alle" Anwendungsfälle ausgiebig zu testen. Ich habe versucht möglichst alle exeptions (und sowas wie "positive 0 und negative 0") 1 zu 1 nachzubilden um den in AutoIt üblichen Rechenregeln zu entsprechen. Ein paar Funktionen arbeiten dennoch anders, z.B. rational power(x, y) = x^y. AutoIt schummelt hier und nimmt y einfach als Integer, wenn es "nah genug" an einem Integer liegt, damit kann man auch negative Zahlen potenzieren, was diese UDF aber nicht kann.
Wenn jemand Funktionen beisteuern, testen, die UDF nutzen, (z.B. um ein Incremental-Idle-Game zu basteln wo es wahnsinnig riesige Zahlen gibt), Änderungen vornehmen, etc. will. Immer her damit, ich bin für jede Kritik und jeden Verbesserungsvorschlag offen.
lg
M