Курс языка программирования Raku / Основы / Числа

Рациональные числа

Рациональные числа — это уникальная особенность Raku. Такие числа представлены типом данных Rat.

Внутри Raku рациональные числа являются дробями с двумя целыми частями: числитель и знаменатель. Поэтому вы можете с легкость представить такие числа, как 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 являются рациональными числами, и Raku хранит их внутри как 1/10, 2/10 и 3/10. Запустите следующее из командной строки, чтобы удостовериться в этом:

$ raku -e 'say 0.1 + 0.2 - 0.3'
0

Символы Юникода

В качестве дробей также возможно использовать символы Юникода, такие как ½, ¼ или ¾. Наверное, такие дроби не всегда легко набрать с клавиатуры, но они полностью соответствуют своим ASCII альтернативам, записанным как дробь или как десятичное число:

½ 1/2 <1/2> 0.5
¼ 1/4 <1/4> 0.25
¾ 3/4 <3/4> 0.75

С некоторыми дробями, как например 1/3, у вас меньше опций, только или <1/3>, так как десятичная форма бы требовала бесконечное количество цифр.

Практика

Пройдите викторину, которая охватывает содержание этой темы.

Навигация по курсу

Числа / Целые числа   |   Числа / Числа с плавающей точкой


💪 Or jump directly to the exercises to this section.

Эта страница переведена с английского человеком. Оригинальный текст на английском языке. О переводе.

Переводы этой страницы: EnglishDeutschEspañolItalianoLatviešuNederlandsБългарскиРусскийУкраїнська