Visual studio 为什么System::Convert具有如此奇怪的舍入定义行为?

Visual studio 为什么System::Convert具有如此奇怪的舍入定义行为?,visual-studio,visual-c++,c++-cli,Visual Studio,Visual C++,C++ Cli,我在看,返回值是“四舍五入到最接近的32位无符号整数。如果值在两个整数之间,则返回偶数;也就是说,4.5转换为4,5.5转换为6。”这似乎是一种非常奇怪的数字四舍五入方式,实际上,它似乎使这个函数不适合我想在其中使用的大多数情况。任何原因都应该是这样的吗?< P>这个问题似乎与C++程序设计语言(尽管有标签)无关,但与C<./P>有关。 这是, 这实现了通常所说的“从一半到甚至取整”或“银行家取整”,请参见上的参考资料 IEEE 754标准()描述了浮点数(如双精度)的舍入规则。微软只是遵守了这

我在看,返回值是“四舍五入到最接近的32位无符号整数。如果值在两个整数之间,则返回偶数;也就是说,4.5转换为4,5.5转换为6。”这似乎是一种非常奇怪的数字四舍五入方式,实际上,它似乎使这个函数不适合我想在其中使用的大多数情况。任何原因都应该是这样的吗?

< P>这个问题似乎与C++程序设计语言(尽管有标签)无关,但与C<./P>有关。 这是, 这实现了通常所说的“从一半到甚至取整”或“银行家取整”,请参见上的参考资料

IEEE 754标准()描述了浮点数(如双精度)的舍入规则。微软只是遵守了这些规则


此外,“银行家四舍五入法”不像“零距四舍五入法”那样存在负偏差或正偏差,至少在最合理的分配中是如此。因此,它被认为是一个“更好”的舍入方法。

< P>这个问题似乎与C++编程语言(尽管有标签)无关,但与C<./P>有关。 这是, 这实现了通常所说的“从一半到甚至取整”或“银行家取整”,请参见上的参考资料

IEEE 754标准()描述了浮点数(如双精度)的舍入规则。微软只是遵守了这些规则


此外,“银行家四舍五入法”不像“零距四舍五入法”那样存在负偏差或正偏差,至少在最合理的分配中是如此。因此,它被认为是一个“更好”的舍入方法。

这与C++有关,如何?充其量——这是关于C++/CLI的问题。请用标签回答你的问题,实际上,这些标签与你的问题有关。顺便说一句,它的目的是平衡分布和打破联系。处理器非常喜欢它,在x86代码中实现为FISTP指令。这影响了Math::Round()和Convert::ToInt32()的默认选择。8087协处理器设计有很多怪癖,但是迎合想要支付额外费用的人可能与它有关:这与C++有关,如何?充其量——这是关于C++/CLI的问题。请用标签回答你的问题,实际上,这些标签与你的问题有关。顺便说一句,它的目的是平衡分布和打破联系。处理器非常喜欢它,在x86代码中实现为FISTP指令。这影响了Math::Round()和Convert::ToInt32()的默认选择。8087协处理器设计有很多怪癖,但是迎合想要支付(额外的)额外费用的人可能与它有关系:由于某种原因,我链接到错误的文档页面(现在就固定了),我不应该包括C++ TAG,而应该是有人纠正的C++ CLI标签。谢谢你的信息,但是你能告诉我为什么这可能会被人们在高中时所教的标准的舍入程序所支持吗?@托德编辑我的答案,增加了更多的信息和回答你的评论。由于某种原因,我链接到了错误的文档页面(现在就固定了),我不应该包括C++ TATH,而是有人善意地纠正了c++-cli标记。谢谢你提供的信息,但是你能告诉我为什么这可能比人们在高中通常学习的标准取整程序更受欢迎吗?@tomd编辑了我的答案,为你的评论添加了更多信息和答案。