有没有一种情况,如果将它们比较为DOUBLE,则两个浮点值之间的compare(equals())将返回false,如果将它们比较为FLOAT,则返回true
作为我的小组项目的一部分,我正在编写一些程序来比较任何给定类型的两个数值.有4种类型,我必须完全处理:double,float,int和long.所以我想把double和float组合成一个函数,也就是说,我只是把任何浮点数加倍并进行比较.
这会导致任何不正确的结果吗?
谢谢.
解决方法
如果您将双精度转换为浮点数,并且它们之间的差异超出了浮点型的精度,则可能会遇到麻烦.
例如,假设你有两个双重值:
9.876543210 9.876543211
并且浮点数的精度只有六位十进制数字.这意味着两个浮点值将为9.87654,因此相等,即使双重值本身不相等.
但是,如果您正在谈论将浮标投射到双打,那么相同的浮标应该给你相同的双打.如果浮标是不同的,额外的精度将确保双打也是不同的.