我想将浮点数四舍五入到最接近的整数,当存在“最接近的整数”时,趋向正无穷大。
use std::num::Float;
fn main() {
assert_eq!(-0.0, (-0.5).round()); // fails!
}
但是,文档round
say:
将中途情况舍入到远离 0.0 的位置。
我还没有看到任何可以让我改变舍入模式的东西,但一定有某种方法,对吧?
看来,实施Float::round
,至少对于f32
and f64
,转发到roundf32
/roundf64
内在函数,它们本身是使用 LLVM 函数实现的llvm.round.f32
and llvm.round.f64
. The 的文档llvm.round.* http://llvm.org/docs/LangRef.html#llvm-round-intrinsic遗憾的是,没有说明如何控制舍入模式。 LLVM 参考文献中似乎也没有任何其他内容。我可以发现甚至提到的其他函数都指定了舍入模式one特定的舍入模式,或者说它是未定义的。
我找不到任何关于此的可靠信息。有2011 年 LLVM 邮件列表上的帖子 http://lists.cs.uiuc.edu/pipermail/llvmdev/2011-July/041416.html谈论特定于 x86 的内在函数,以及2013 年发布到 Native Client 问题跟踪器 https://code.google.com/p/nativeclient/issues/detail?id=3540这似乎是在谈论一个假想内在的以及如何很难做到可移植。
盲目地尝试一下:我会尝试编写一个小的 C 库来完成它并链接到它。 LLVM 似乎不直接支持它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)