Tra*_*rap 6 .net floating-point compare rounding
或者操作是否有可能失败?
谢谢.
我选择了错误的术语,我真正的意思是四舍五入到0,而不是截断.
关键是,我需要比较两个双精度的整数部分,我只是将它们转换为int然后使用==,但是,正如有人在我之前的一个问题中指出的那样,这可能会引发溢出异常,如果double不能适合整数.
所以问题是'使用==运算符来比较之前舍入为0的两个双精度是否正确,或者我应该坚持使用cast to int方法并捕获可能的异常?
更糟糕的是,有时,即使是完全相同的数字,它也会失败.这是因为某些编译器或处理器将在CPU寄存器中使用比在存储器中更多的精度位(例如,MSVC具有3个不同的浮点行为选项).因此,最近计算的值可能不会截断这些位并且看起来不相等.永远不要在浮点数上使用==.