Рассмотрим сложение двух чисел:
fn main() {
println!("Сумма чисел равна {}", 2 + 2);
println!("Разность чисел равна {}", 2 - 2);
}
Во время работы программы происходит сложение двух чисел, число вносится в текстовый шаблон на своё место и полученный текст выводится на консоль.
Более сложные вычисления - умножение и деление также выполняются без неожиданностей и сложностей:
fn main() {
println!("Произведение чисел равно {}", 2 * 2);
println!("Частное чисел равно {}", 2 / 2);
}
Попробуйте поделить число на 0
- компилятор проверит код и не даст программе скомпилировать его. Это замечательно, но всё же будьте бдительны,
так как когда вы узнаете о таком понятии как переменная
- вы научитесь обходить эту проверку преднамеренно или случайно.
Язык Rust поддерживает все основные математические операции над числами - это сложение, вычитание, умножение и деление. Также ещё есть
вычисление остатка от деления %
. Порядок вычислений может меняться благодаря использованию круглых скобок.
Рассмотрим пример работы этих математических операций в различных комбинациях:
fn main() {
println!("{}", 2 + 2 - 2 * 2 / 2 % 2);
println!("{}", (2 + 2) - 2 * 2 / 2 % 2);
println!("{}", 2 + (2 - 2) - 2 / 2 % 2);
println!("{}", 2 + 2 - 2 * (2 / 2) % 2);
println!("{}", 2 + 2 - 2 * 2 / (2 % 2));
}
Обратите внимание, что в последнем операторе компилятор выявил деление на 0
и не дал скомпилировать код. Изменив или закомментировав
данную строку вы исправите допущенную ошибку.
Рассмотрим использование математических операций при работе с дробными числами:
fn main() {
println!("Сумма:");
println!("{}", 0.1 + 0.1);
println!("{}", 0.1 + 0.2);
println!("{}", 0.1 + 0.3);
println!("{}", 0.1 + 0.4);
println!("{}", 0.1 + 0.5);
println!("{}", 0.1 + 0.6);
println!("{}", 0.1 + 0.7);
println!("{}", 0.1 + 0.8);
println!("{}", 0.1 + 0.9);
println!("Разность:");
println!("{}", 0.1 - 0.1);
println!("{}", 0.1 - 0.2);
println!("{}", 0.1 - 0.3);
println!("{}", 0.1 - 0.4);
println!("{}", 0.1 - 0.5);
println!("{}", 0.1 - 0.6);
println!("{}", 0.1 - 0.7);
println!("{}", 0.1 - 0.8);
println!("{}", 0.1 - 0.9);
println!("Умножение:");
println!("{}", 0.1 * 0.1);
println!("{}", 0.1 * 0.2);
println!("{}", 0.1 * 0.3);
println!("{}", 0.1 * 0.4);
println!("{}", 0.1 * 0.5);
println!("{}", 0.1 * 0.6);
println!("{}", 0.1 * 0.7);
println!("{}", 0.1 * 0.8);
println!("{}", 0.1 * 0.9);
println!("Деление:");
println!("{}", 0.1 / 0.1);
println!("{}", 0.1 / 0.2);
println!("{}", 0.1 / 0.3);
println!("{}", 0.1 / 0.4);
println!("{}", 0.1 / 0.5);
println!("{}", 0.1 / 0.6);
println!("{}", 0.1 / 0.7);
println!("{}", 0.1 / 0.8);
println!("{}", 0.1 / 0.9);
println!("Остаток от деления:");
println!("{}", 0.1 % 0.1);
println!("{}", 0.1 % 0.2);
println!("{}", 0.1 % 0.3);
println!("{}", 0.1 % 0.4);
println!("{}", 0.1 % 0.5);
println!("{}", 0.1 % 0.6);
println!("{}", 0.1 % 0.7);
println!("{}", 0.1 % 0.8);
println!("{}", 0.1 % 0.9);
}
Rust Playground Пожалуйста, посмотрите на результаты вычислений. Обратите внимание, что некоторые числа имеют длинную последовательность чисел после точки. Это мантисса. Она вычисляется согласно внутреннему представлению чисел с плавающей запятой.
Попробуйте сложить дробное число с целым 2 + 2.
. Что вы получите?
Узнайте об ограничениях при работе макроса println
с числами. Попробуйте написать длинное вычисление (2+2+..). Как быстро
компилятор справится с этой задачей?