Java浮点数学错误?

Ale*_*ier 2 java math floating-point android

我正在尝试计算图像的宽高比:

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));
Run Code Online (Sandbox Code Playgroud)

但这会产生意想不到的结果

img.width:   297
img.height:  167
aspect:      1.0
Run Code Online (Sandbox Code Playgroud)

这似乎有一个简单的答案,但我无法弄清楚.

Ign*_*ams 8

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


Hun*_*len 5

你有一个错字.

float aspect = ((float)img.getIntrinsicWidth()) / 
                                                ((float)img.getIntrinsicWidth());
Run Code Online (Sandbox Code Playgroud)

您将宽度除以宽度,它将始终生成1,除以高度:

float aspect = ((float)img.getIntrinsicWidth()) /
                                               ((float)img.getIntrinsicHeight());
Run Code Online (Sandbox Code Playgroud)