Ich benutze Raku für einige Berechnungen, weil es schöne numerische Typen hat. Ich habe jedoch ein Problem mit der Verwendung von '.raku'.
say (1/6+1/6).raku
#<1/3>
Wir erhalten dies. Jedoch,
say (1/10+1/10).raku
#0.2
Ist es ein Fehler? Ich habe <1/5> erwartet. Was geschieht?
Antworten:
0.2
Konstruiert in Raku aRat
und erzeugt somit das gleiche Ergebnis wie das Schreiben1/5
(das konstant gefaltet wird) oder<1/5>
(die wörtliche Form). Sie erhalten nur Gleitkommawerte, wenn Sie einen Exponenten angeben (z. B.2e-1
).Die Aufgabe der
.raku
(früher als.perl
) bekannten Methode besteht darin, etwas zu erzeugen, das umrundet und den gleichen Wert erzeugt, wennEVAL
'd. Im Fall von1/5
kann dies genau als Dezimalzahl dargestellt werden, sodass es erzeugt wird0.2
. Es wird nur dann auf die gebrochene Darstellung zurückgegriffen, wenn eine Dezimalform nicht umrunden würde.Sie können den Zähler und den Nenner jederzeit mit den Methoden
.numerator
und wiederherstellen, um sie nach Ihren.denominator
Wünschen zu formatieren. Zusätzlich gibt die.nude
Methode eine Liste des Zählers und Nenners zurück, die bei Bedarf mit einem/
verknüpft werden kann:quelle
.nude
bester ungewollt lustiger MethodennameHi @ milou123 Ich war auch ein bisschen überrascht, dass Raku zur Dezimaldarstellung zurückkehrt - ich kann sehen, dass einige Kontexte - wie das Unterrichten von Brucharithmetik - von einem "Keep as Rat" -Modus profitieren würden. Allerdings macht es letztendlich Sinn, dass es nur einen Weg gibt, etwas zu rakuieren, und dass die Dezimalzahl die Standarddarstellung ist.
Natürlich können Sie mit Raku auch die Sprache ein wenig ändern. In diesem Fall habe ich einen neuen '→' Postfix-Operator erfunden ...
Ich bin nicht klug genug, um herauszufinden, ob die eingebaute 'Raku'-Methode auf ähnliche Weise überschrieben werden kann. Ich würde gerne Ratschläge dazu erhalten, wie man das präzise macht ...
quelle