Программирование на языке Ruby
Шрифт:
Как и всякий современный язык, Ruby прекрасно умеет работать с любыми числами — как целыми, так и с плавающей точкой. В нем есть полный набор ожидаемых математических операторов и функций, а вместе с тем и кое-какие приятные сюрпризы: классы
Помимо средств для манипуляции числами, имеющихся в системной и стандартной библиотеках, мы рассмотрим более специфические темы (тригонометрия, математический анализ и статистика). Примеры приведены не только для справки, но и как образцы кода на языке Ruby, иллюстрирующие принципы, изложенные
5.1. Представление чисел в языке Ruby
Если вы знакомы с любым другим языком программирования, то представление чисел в Ruby не вызовет у вас никакого удивления. Объект класса
Если число длинное, то между любыми цифрами можно вставлять знак подчеркивания. Это сделано исключительно для удобства, назначении константы никак не сказывается. Обычно подчерки вставляются в те же места, где бухгалтеры вставляют пробелы:
Целые числа можно представлять и в других системах счисления (по основанию 2, 8 и 16). Для этого в начале ставятся префиксы
В числах с плавающей точкой десятичная точка должна присутствовать, а показатель степени, возможно со знаком, необязателен:
В классе
5.2. Основные операции над числами
Обычные операции сложения, вычитания, умножения и деления в Ruby, как и во всех распространенных языках программирования, обозначаются операторами
Возведение в степень обозначается оператором
При делении одного целого числа на другое дробная часть результата отбрасывается. Это не ошибка, так и задумано. Если вы хотите получить результат с плавающей точкой, позаботьтесь о том, чтобы хотя бы один из операндов был числом c плавающей точкой.
Если вы работаете с переменными и сомневаетесь относительно их типа, воспользуйтесь приведением типа к
См. также раздел 5.17 «Поразрядные операции над числами».
5.3. Округление чисел с плавающей точкой
Кирк: Какие, вы говорите, у нас шансы выбраться отсюда?
Спок: Трудно сказать точно, капитан. Приблизительно 7824.7 к одному.
Метод
Иногда бывает нужно округлить не до целого, а до заданного числа знаков после запятой. В таком случае можно воспользоваться функциями
Это не слишком красиво. Поэтому инкапсулируем оба вызова функций в метод, который добавим в класс
Иногда требуется округлять до целого по-другому. Традиционное округление