Javascript/COM (wie auch Autohotkey) versteht offenbar keine rationalen Zahlen mit Hexadezimalpunkt.
Deswegen wird in dieser Rechenaufgabe:
Code: Select all
q::
Exp := "2 * 0x3.243F6A8885A" ;Rechenaufgabe
; bitte dieses RegexReplace verallgemeinern:
Exp := RegexReplace(Exp,"0x3.243F6A8885A","(0x3243F6A8885A/0x100000000000)")
; die Anzahl der "0" in 0x100000000000 hinter "0x" ist gleich der Anzahl
; der Nach-Hexadezimalpunkt-Stellen von 0x3.243F6A8885A
MsgBox,% "2 * Pi ≈ " Eval(Exp)
Return
eval(exp) ;tidbit: https://www.autohotkey.com/boards/viewtopic.php?f=6&t=15389
{ ;(gekürzt!) Uses Javascript/COM to evaluate stringed math expressions.
obj:=ComObjCreate("HTMLfile")
obj.write("<body><script>document.body.innerText=eval('" exp "');</script>")
return inStr(cabbage:=obj.body.innerText, "body") ? "ERROR" : cabbage
}
Mein Ziel ist es das Primitiv-RegexReplace durch ein allgemeines zu ersetzen.
Die Position des Punktes sollte doch irgendwie mit dem Metazeichen \G erfassbar sein und zur Generierung des 0xFF... -Divisor verwendet werden können?
Edit: Da war leider ein Fehler drin!