Kurso de Raku / Esencoj / Bazoj de variabloj kaj datumtipoj / Nombroj
Raciaj nombroj
Raciaj nombroj estas unika trajto de Raku. La datumtipo
Rat reprezentas tiajn nombrojn.
Interne, raciaj nombroj estas frakcioj kun du entjeraj partoj: numeratoro kaj denominatoro. Do, vi povas facile prezenti nombrojn kiel 1/3 sen perdi precizecon.
Estas kelkaj manieroj por skribi Rat nombron en programo
en Raku:
my $x = 1/2;
my $y = <2/3>;Notu, ke la streketo ĉi tie estas parto de la notacio. Ĝi ne estas
dividoperanto, do 1/2 ne signifas, ke vi dividas 1 per 2.
Tamen, en presado, raciaj nombroj estas montrataj kiel decimalaj nombroj
aŭ entjeroj:
say 1/2; # 0.5
say 3/4; # 0.75La parto de la linio post la simbolo # estas komento kaj
estas ignorata de la kompililo. Tiaj komentoj estos uzataj en la kurso
por montri la eliron de la programo.
Decimala formo
Estas grave kompreni, ke kiam vi skribas la nombron en decimala
formo, ekzemple, 0.5, Raku kreas Rat nombron
en tiu momento. Ĝi ne estas entjero, sed ĝi ankaŭ ne estas glitkompunkto
(float aŭ double en aliaj lingvoj). Ĝi estas
ankoraŭ racia nombro!
Konsideru la sekvan ekzemplon:
say 0.1 + 0.2 - 0.3;Se programlingvo uzas glitkompunkta aritmetiko por ĉi tiuj kalkuloj, la rezulto ne estos egala al 0. La retejo 0.30000000000000004.com donas elĉerpan liston de ekzemploj kie glitkompunkta aritmetiko ne donas atenditan rezulton.
Sed Raku presas ekzaktan 0. Ĉi tio okazas ĉar ĝi traktas
la nombrojn 0.1, 0.2, kaj 0.3
kiel raciajn nombrojn kaj konservas ilin kiel 1/10,
2/10, kaj 3/10 interne. Rulu ĝin de la
komandlinio por konfirmi:
$ raku -e 'say 0.1 + 0.2 - 0.3'
0Unikodaj formoj
Eblas ankaŭ uzi Unikodajn karakterojn kiuj reprezentas la frakciojn,
kiel ½ aŭ ¼ aŭ ¾. Probable, ne
ĉiam estas facile tajpi ilin per la klavaro, sed ĉi tiuj frakcioj estas
ekzakte la samaj valoroj kiel iliaj ASKII-versioj literumitaj kiel
frakcio aŭ kiel decimala nombro:
½ | 1/2 | <1/2> |
0.5 ¼ | 1/4 |
<1/4> | 0.25 ¾ |
3/4 | <3/4> | 0.75
Kun kelkaj frakcioj, kiel 1/3, vi havas malpli da
opcioj, ⅓ aŭ <1/3>, ĉar la decimala
formo postulus senfinan nombron da ciferoj.
Praktiko
Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.
Kursa navigado
← Kvizo: Unikodaj ciferoj kaj nombroj | Kvizo: Raciaj nombroj en Raku →
💪 Aŭ iru rekte al la ekzercoj de ĉi tiu
sekcio.