Курс по 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'
0

Unicode форми

Възможно е също така да използвате 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


💪 Или преминете направо към упражненията в този раздел.