Курс языка программирования 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>, так как
десятичная форма бы требовала бесконечное количество цифр.
Практика
Пройдите 1 тест по содержанию этой темы.
Навигация по курсу
← Тест: Цифры и числа в Юникоде | Тест: Рациональные числа →
💪 Или перейдите сразу к упражнениям этого
раздела.