我对如何比较两个浮点数是否相等感到困惑,在我的应用程序中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;}
答案 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;}