Курс по Raku / Основи / Основи на променливите и типовете данни / Числа
Рационални числа
Рационалните числа са уникална характеристика на Raku. Типът данни
Rat представлява такива числа.
Вътрешно, рационалните числа са дроби с две цели части: числител и знаменател. Така че, можете лесно да представите числа като 1/3 без загуба на точност.
Има няколко начина да запишете Rat число в програма на
Raku:
my $x = 1/2;
my $y = <2/3>;Забележете, че наклонената черта тук е част от нотацията. Тя не е
оператор за деление, така че 1/2 не означава, че делите 1
на 2. При печат обаче, рационалните числа се показват като десетични
числа или цели числа:
say 1/2; # 0.5
say 3/4; # 0.75Частта от реда след символа # е коментар и се игнорира
от компилатора. Такива коментари ще се използват в курса, за да покажат
изхода на програмата.
Десетична форма
Важно е да осъзнаете, че когато записвате числото в десетична форма,
например 0.5, Raku създава Rat число в този
момент. То не е цяло число, но също така не е и число с плаваща запетая
(float или double в други езици). То все още е
рационално число!
Разгледайте следния пример:
say 0.1 + 0.2 - 0.3;Ако програмен език използва аритметика с плаваща запетая за тези изчисления, резултатът няма да бъде равен на 0. Уебсайтът 0.30000000000000004.com дава изчерпателен списък с примери, където аритметиката с плаваща запетая не дава очаквания резултат.
Но Raku отпечатва точно 0. Това се случва, защото
третира числата 0.1, 0.2 и 0.3
като рационални числа и ги съхранява като 1/10,
2/10 и 3/10 вътрешно. Стартирайте го от
командния ред, за да го потвърдите:
$ raku -e 'say 0.1 + 0.2 - 0.3'
0Unicode форми
Възможно е също така да използвате Unicode символи, които
представляват дробите, като ½ или ¼ или
¾. Вероятно не винаги е лесно да ги въведете с
клавиатурата, но тези дроби са точно същите стойности като техните ASCII
версии, изписани като дроб или като десетично число:
½ | 1/2 | <1/2> |
0.5 ¼ | 1/4 |
<1/4> | 0.25 ¾ |
3/4 | <3/4> | 0.75
С някои дроби, като 1/3, имате по-малко опции,
⅓ или <1/3>, тъй като десетичната форма
би изисквала безкраен брой цифри.
Практика
Направете 1 тест върху съдържанието на тази тема.
Навигация в курса
← Тест: Юникод цифри и числа | Тест: Рационални числа в Raku →
💪 Или преминете направо към упражненията в този
раздел.