我的代码面临的问题是当我用浮点数乘以数字时if语句不起作用。如
int x;
float xRatio = 1.0;
if ( x > 600 * xRatio && x < 1320 * xRatio) {
// Do something (Draw on canvas for android)
}
然而,即使我尝试这个
float xCompare1 = 1320 * xRatio;
System.out.println(xCompare1);
打印0
或NaN
。
我不明白为什么if语句不起作用,因为它在我使用它时起作用
if (x > 100 * xRatio && x < 599 * xRatio) {
// Do something
}
它有效并且让我很困惑
//编辑
这就是我定义xRatio和xValue
的方法Point size = new Point();
this.getWindowManager().getDefaultDisplay.getRealSize(size);
double width = size.x;
float xRatio = (float) width/1920;
x+= 20;
canvas.drawBitmap(bitmap, x, 0, null);
答案 0 :(得分:1)
我尝试过它正常运行,只需将float xRatio = 1.0;
更改为float xRatio = 1.0f;
答案 1 :(得分:-1)
基本上你应该避免对潜在类型进行比较,特别是在整数和浮点类型方面。
然而,这并不总是可行的。如果在比较数字时需要更通用的解决方案,请使用包装器方法和BigDecimal: Comparing Numbers in Java
对于你的代码,这当然太过分了。