【发布时间】:2017-08-14 13:37:39
【问题描述】:
我在看MSDN documentation for System::Convert::ToUInt32(Double),返回值是“四舍五入到最接近的 32 位无符号整数的值。如果值在两个整数之间,则返回偶数;即 4.5转换为 4,而 5.5 转换为 6。”这似乎是一种非常奇怪的四舍五入方法,实际上似乎使该函数不适合我想要使用它的大多数情况。有什么理由应该这样吗?
【问题讨论】:
-
这个和C++有关,怎么弄?充其量 - 这是关于 C++/CLI 的问题。请edit您的问题带有标签,即实际上,与您的问题相关。
-
它被称为Round-half-to-even or Bankers Rounding btw,它的目的是平均分配和打破关系。
-
处理器非常喜欢它,在 x86 代码中实现为 FISTP 指令。这影响了 Math::Round() 和 Convert::ToInt32() 的默认选择。 8087 协处理器设计有很多怪癖,但迎合那些想为该选项支付(很多)额外费用的人可能与它有关:)
标签: visual-studio visual-c++ c++-cli