用浮点数乘以我的数字?

时间:2015-07-14 10:13:51

标签: java eclipse floating-point int multiplication

我的代码面临的问题是当我用浮点数乘以数字时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);

打印0NaN

我不明白为什么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);

2 个答案:

答案 0 :(得分:1)

我尝试过它正常运行,只需将float xRatio = 1.0;更改为float xRatio = 1.0f;

即可

答案 1 :(得分:-1)

基本上你应该避免对潜在类型进行比较,特别是在整数和浮点类型方面。

然而,这并不总是可行的。如果在比较数字时需要更通用的解决方案,请使用包装器方法和BigDecimal: Comparing Numbers in Java

对于你的代码,这当然太过分了。