3
我讀上rust-lang.org的Rust tutorial,和我碰到下面的代碼來:負零拉斯特模式匹配
use std::f64;
fn angle(vector: (f64, f64)) -> f64 {
let pi = f64::consts::PI;
match vector {
(0.0, y) if y < 0.0 => 1.5 * pi,
(0.0, _) => 0.5 * pi,
(x, y) => (y/x).atan()
}
}
通常爲atan2
我希望看到的特殊情況爲-0
和0
,例如以實現這些案例:
atan2(+0, +0) = +0
atan2(+0, −0) = +π
atan2(−0, +0) = −0
atan2(−0, −0) = −π
我不是說教程應該包括這些例子。畢竟這只是match
結構的演示。
我只是想知道0.0
也會匹配-0.0
嗎?或者如果這兩者會被認爲是不相交的值?
這很有道理,使用專門的浮點函數可以更好地完成這些比較。 –