我认为,传统上,所有退化浮点都被称为"NaN",但Rust似乎区分了三种退化浮点:+inf、-inf和NaN(这就是为什么我在标题中使用术语"非有限"而不是"NaN"或"无限").

当您try 将它们转换为整数(如u64)时会发生什么情况?是否有明确的行为?如果是,定义的行为是什么?

我假设这是未定义的.reddit上一条7年前的帖子说它还没有定义,但从那以后事情可能已经改变了.

在"Rust by Example"中,似乎是说nan被转换为0.

根据我的实验,它在实践中不会panic ,因此,除非编译器中存在明显的错误,否则我假设该行为不被定义为"panic ".

推荐答案

防 rust 参考here将其定义为:

数字转换

从浮点转换为整数将使浮点向零舍入

  • NaN将返回0

  • 大于最大整数值的值,包括无穷大,

  • 小于最小整数值的值,包括

Rust相关问答推荐

为什么导入Borrow将借入的呼叫改为Borrow::borrow而不是RefCell::borrow

阻止websocket中断的中断中断的终端(操作系统错误4)

泛型属性比较

PyReadonlyArray2到Vec T<>

如何在Rust中实现Functor trait?

如何访问Rust存储值的内存地址

亚性状上位性状上的 rust 病伴生型界限

如何高效地将 struct 向量中的字段收集到单独的数组中

了解Rust';s特征对象和不同函数签名中的生存期注释

Rust:为什么 &str 不使用 Into

将泛型中的 Box 转换为 rust 中的 Box

存储返回 impl Trait 作为特征对象的函数

我可以禁用发布模式的开发依赖功能吗?

Google chrome 和 Apple M1 中的计算着色器

中文优化标题:跳出特定循环并返回一个值

为什么Rust编译器会忽略模板参数应具有静态生命周期?

为什么不可变特征的实现可以是可变的?

为实现特征的所有类型实现显示

如果我立即等待,为什么 `tokio::spawn` 需要一个 `'static` 生命周期?

如何在不设置精度的情况下打印浮点数时保持尾随零?