【发布时间】:2015-03-23 04:53:09
【问题描述】:
我想将浮点数四舍五入到最接近的整数,当“最接近的整数”出现平局时趋向正无穷大。
use std::num::Float;
fn main() {
assert_eq!(-0.0, (-0.5).round()); // fails!
}
但是,round 的文档说:
距离 0.0 的中途情况舍入。
我还没有看到任何可以让我改变舍入模式的东西,但总有办法吧?
【问题讨论】:
-
IEEE 754 浮点标准中没有“最接近加无穷大”舍入模式。即使 Rust 允许您完全访问硬件的功能(它可能会或可能不会),它也不会提供这种舍入模式。您必须手动进行四舍五入。 blog.frama-c.com/index.php?post/2013/05/02/nearbyintf1 中提供了三种不同的方法,而第二种方法至少应该易于修改,以便按照您想要的方式进行舍入。
-
@PascalCuoq 哎呀!这就是我假设的结果!以供将来参考,here's the list of the 5 rounding modes 实际存在。
标签: floating-point rust rounding