我正在使用这个:
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
因为它仅适用于整数。您必须将其中一个操作数转换为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
改用双打。
int newWidth = (int)Math.round(297 * (40d / 414));
改成int newWidth = (int)Math.round(297 * (40.0 / 414));
Java 中的 int 不使用小数位...因此您应该为此使用双精度数。它给你一个 0 因为在 () 40/ 414 = 0 里面。
问题从 40/414 开始:这是整数除法,它返回一个 int。在这种情况下:0。
要修复它,请将其中一个整数转换为双精度或浮点数,例如 ((float) 40 / 414)。
结果40/414
为零。这是整数除法的结果。将分子或分母更改为浮点值以获得所需的结果
要把我的 2 美分投入...如前所述,问题在于整数除法。强制此除法将结果视为双精度的另一种方法:
int newWidth = Math.round(297 * (40.0 / 414));
40/414 舍入为 0。
你可能想要的是
int newWidth = (297 * 40) / 414;