gpt4 book ai didi

pattern-matching - Rust 模式匹配中的负零

转载 作者:行者123 更新时间:2023-11-29 07:59:10 25 4
gpt4 key购买 nike

我正在阅读 Rust tutorial在 rust-lang.org 上,我发现了以下代码:

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 我希望看到 -00 的特殊情况,例如实现如下情况:

atan2(+0, +0) = +0
atan2(+0, −0) = +π
atan2(−0, +0) = −0
atan2(−0, −0) = −π

我并不是说教程应该包含这些示例。毕竟这只是一个match结构的演示。

我只是想知道 0.0 是否也匹配 -0.0?或者这两者是否会被识别为不相交的值?

最佳答案

好吧,你可以试试看!这是游戏测试的链接:http://is.gd/NiS0gF

显然,0.0 匹配 -0.0。这段代码:

fn main() {
let x = -0.0f64;
match x {
0.0f64 => println!("Zero!"),
_ => println!("Something else!")
}
}

当在游戏测试中运行时打印“零!”,所以 0.0-0.0match 的角度来看是一样的。这是很自然的,前提是

fn main() {
println!("{}", -0.0f64 == 0.0f64);
}

also prints "true" .

关于pattern-matching - Rust 模式匹配中的负零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24661461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com