Java 用浮点数乘以我的a数?

Java 用浮点数乘以我的a数?,java,eclipse,floating-point,int,multiplication,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) } 它要么打印0要么打印NaN 我不明白为什么if语句不起作用,因为我在这里使用它时它就起作用了

我的代码面临的问题是,当我将一个数字乘以一个浮点数时,if语句不起作用。比如

int x;
float xRatio = 1.0;
if ( x > 600 * xRatio && x < 1320 * xRatio) {                       
    // Do something (Draw on canvas for android)
}
它要么打印
0
要么打印
NaN

我不明白为什么if语句不起作用,因为我在这里使用它时它就起作用了

    if (x > 100 * xRatio && x < 599 * xRatio) {
        // Do something
    }

我试过了,它正在工作,只需更改
float xRatio=1.0到<代码>浮动比率=1.0f

基本上,您应该避免对不同类型进行比较,尤其是在涉及整型和浮点型时

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


对于您的代码来说,这当然是太多了。

float xRatio=1.0应为
浮动比率=1.0f这里的“x”值是多少。@MarkoTopolnik是的,这应该是一个编译错误。我认为op没有正确显示代码是的,这表明op没有显示导致他出现问题的正确代码。@dizazta你能用正确的代码编辑你的问题吗?你的代码和你的问题不匹配这是一个相当空洞的答案。如果没有
f
,它就不会编译。OP的投诉完全不同,因此显然困扰他的不是
f
。引自问题:
它打印0或NaN。
虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,只有链接的答案可能会无效。你说得对。我延长我的回答。
    if (x > 100 * xRatio && x < 599 * xRatio) {
        // Do something
    }
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);