私はこれを使用しています:
int newWidth = Math.round(297 * (40 / 414));
コードでは、数字は実際には変数ですが、それらは保持していたものであり、コードを実行するnewWidth
と 0 として返され、28 または 29 を期待していました。ここで何が問題なのかわかりません...
私はこれを使用しています:
int newWidth = Math.round(297 * (40 / 414));
コードでは、数字は実際には変数ですが、それらは保持していたものであり、コードを実行するnewWidth
と 0 として返され、28 または 29 を期待していました。ここで何が問題なのかわかりません...
40 / 414
0
整数でのみ機能するため、すぐに丸められます。オペランドの 1 つをdouble
/にキャストするか、すぐにfloat
使用する必要があります。double
int newWidth = (int)Math.round(297 * (40.0 / 414));
また:
int newWidth = (int)Math.round(297 * ((double)40 / 414));
40/414
に等しいので0
、そう297*0 = 0
そしてMath.round(0) = 0
代わりに double を使用してください。
int newWidth = (int)Math.round(297 * (40d / 414));
Javaのintは小数点以下を使用しません...したがって、これにはdoubleを使用する必要があります。() 内は 40/414 = 0 であるため、0 が返されます。
への変更int newWidth = (int)Math.round(297 * (40.0 / 414));
問題は 40/414 から始まります。これは、int を返す整数除算です。この場合: 0.
これを修正するには、これらの int の 1 つを double または float にキャストします (((float) 40 / 414) など)。
の結果40/414
はゼロです。これは整数除算の結果です。分子または分母のいずれかを浮動小数点値に変更して、目的の結果を取得します
私の 2 セントを投入します...前述のように、問題は整数除算にあります。この除算で結果を double として扱うように強制する別の方法:
int newWidth = Math.round(297 * (40.0 / 414));
40/414 は 0 に丸められます。
おそらくあなたが望むのは
int newWidth = (297 * 40) / 414;