Java浮点数学错误?

Java浮点数学错误?,java,android,math,floating-point,Java,Android,Math,Floating Point,我试图计算图像的纵横比: Log.d("img.width:", String.valueOf(img.getIntrinsicWidth())); Log.d("img.height:", String.valueOf(img.getIntrinsicHeight())); float aspect = ((float)img.getIntrinsicWidth()) / ((float)img.getIntrinsicWidth()); Log.d("aspect:", String.val

我试图计算图像的纵横比:

Log.d("img.width:", String.valueOf(img.getIntrinsicWidth()));
Log.d("img.height:", String.valueOf(img.getIntrinsicHeight()));
float aspect = ((float)img.getIntrinsicWidth()) / ((float)img.getIntrinsicWidth());
Log.d("aspect:", String.valueOf(aspect));
但是,这会产生意想不到的结果:

img.width:   297
img.height:  167
aspect:      1.0

这似乎有一个简单的答案,但我想不出来。

你用宽度除以宽度。尝试将其中一个替换为高度。

您有一个输入错误

float aspect = ((float)img.getIntrinsicWidth()) / 
                                                ((float)img.getIntrinsicWidth());
您将宽度除以宽度,宽度始终为1,而不是除以高度:

float aspect = ((float)img.getIntrinsicWidth()) /
                                               ((float)img.getIntrinsicHeight());

这是一个打字错误,其中一个必须是身高。你正在用宽度除以宽度

float aspect = ((float)img.getIntrinsicWidth()) / ((float)img.getIntrinsicWidth());

您是否尝试过浮动方面=(新的浮动(img.getIntrinsicWidth())/(新的浮动(img.getIntrinsicWidth()))

您输入了一个错误,您正在用宽度除以宽度。应该是宽高比

另外,为了让眼睛看起来更容易,你不需要为一个划分使用浮点数来投射两边;如果右侧为浮动,则左侧将自动转换为浮动

float aspect = img.getIntrinsicWidth() / (float)img.getIntrinsicHeight();

没有注意到宽度/宽度,与原始海报所犯的错误相同,但认为可能存在铸造问题,因此可能尝试创建一个新实例会有所帮助。