что такое -inf
?
Это отрицательная бесконечность, как определено в стандарте IEEE с плавающей запятой. Это результат деления отрицательных чисел с плавающей запятой на ноль.
Однако, когда я попробовал следующий код, он не вывел true, вместо этого он выдал ошибку.
fn main() {
println!("{}", (-10. / 0.) == -inf);
}
Rust не определяет глобальную переменную или ключевое слово с именем inf
. Поэтому вы не можете использовать inf
, если сначала не определите (или не импортируете откуда-то) переменную с этим именем. -inf
это просто строка, которую вы получаете при преобразовании отрицательной бесконечности в строку. Сам по себе это недопустимый литерал с плавающей запятой.
Какое значение я должен дать вместо -inf, чтобы получить истинную распечатку?
Вы можете использовать константы INFINITY
или NEG_INFINITY
из заданного типа с плавающей точкой, например -10. / 0. == std::f64::NEG_INFINITY
или -10. / 0. == -std::f64::INFINITY
. Или вы можете определить let inf = 1. / 0.;
, тогда (-10. / 0.) == -inf
будет правдой. Или вы можете просто написать -10. / 0. == -1. / 0.
или любое другое выражение, которое приводит к отрицательной бесконечности.
Какой тип -inf
?
Тип -inf
совпадает с числом чисел с плавающей запятой, которые вы разделили, чтобы получить -inf
. Если вы разделите два f32
с, вы получите f32
, а если вы поделите два f64
с, вы получите f64
. Если тип операндов еще не определен, тип результата будет {float}
, пока не будет определен более конкретный тип.
Обратите внимание, что это ничем не отличается от любого другого случая. деления двух чисел с плавающей запятой (или сложения, умножения и т. д.). Другими словами, x / y
, где y
равно 0. имеет тот же тип, что и x / y
, где y
- любое другое число с плавающей запятой.