Float.equals或其他最佳方法,用于比较两个浮点数是否相等

时间:2016-05-10 06:15:16

标签: android

我对如何比较两个浮点数是否相等感到困惑,在我的应用程序中if条件有效,但在输出时我将数字除以零NaN消息弹出并显示,有什么问题,我怎么能修复它,如

                 case 4:
                     n1=Float.parseFloat(c);
                     n2=Float.parseFloat(a);
                     result=n1/n2;
                     float n3=0f;
                    // if(Float.floatToIntBits(n2)==Float.floatToIntBits(0))
                       if (n2==0)
                     {
                         Toast zermessege=Toast.makeText(getApplicationContext(),"عدد تقسیم بر صفر !!",Toast.LENGTH_LONG);
                         zermessege.setGravity(Gravity.TOP|Gravity.LEFT,120,0);
                         zermessege.show();
                         tx.setText("0");


                     }
                      else{
                     tx.setText(result+"");
                     break;}

1 个答案:

答案 0 :(得分:0)

你的逻辑有点偏。你永远不能将任何数字除以0.结果是“NaN”或“非数字”。

这里有一些逻辑问题 1)n1 = Float.parseFloat(c);为什么要尝试将String值转换为float。如果你可以避免它,尽量避免它。虽然Java允许这种转换,但我们通常不希望使用数据模型的完整性,数字应该通过系统用数字表示,除非你无法避免。

2)比较2个花车你需要做的全部

float a = 1f;
float b = 2f;
if(a == b){
// if a and b are equal do this.
}else{
// if a and b are not equal do this.
}

3)现在解决您的代码问题。在不满足if(n2 == 0)条件之前,您不能进行除法。

case 4: 
    n1=Float.parseFloat(c);
                     n2=Float.parseFloat(a);
                     float n3=0f;
                     if (n2==0) {
// do whatever you were doing
                 tx.setText("0");  
                 } else{ 
                 result=n1/n2; 
                 tx.setText(result+""); 
                 break;}