我正在使用它:
int newWidth = Math.round(297 * (40 / 414));
在代码中,数字实际上是变量,但是那些是他们持有的,当我运行代码时newWidth
回到0,我期待28或29.我看不出是什么这里错了......
答案 0 :(得分:9)
40 / 414
会立即四舍五入为0
,因为它只适用于整数。您必须将其中一个操作数强制转换为double
/ float
或立即使用double
:
int newWidth = (int)Math.round(297 * (40.0 / 414));
或:
int newWidth = (int)Math.round(297 * ((double)40 / 414));
答案 1 :(得分:5)
由于40/414
等于0
,因此297*0 = 0
和Math.round(0) = 0
改为使用双打。
答案 2 :(得分:3)
int newWidth = (int)Math.round(297 * (40d / 414));
答案 3 :(得分:2)
更改为int newWidth = (int)Math.round(297 * (40.0 / 414));
答案 4 :(得分:2)
java中的int不使用小数位...因此你应该使用double。它给你一个0,因为在()40/414 = 0。
内答案 5 :(得分:2)
问题从40/414开始:那是整数除法,它返回一个int。在这种情况下:0。
要修复它,将其中一个整数转换为双精度或浮点数,例如((浮动)40/414)。
答案 6 :(得分:1)
40/414
的结果为零。这是整数除法的结果。将分子或分母更改为浮点值以获得所需结果
答案 7 :(得分:1)
如上所述,我要投入2美分,问题在于整数除法。强制这种除法将结果视为双精度的另一种方法:
int newWidth = Math.round(297 * (40.0 / 414));
答案 8 :(得分:0)
40/414四舍五入为0.
你可能想要的是
int newWidth = (297 * 40) / 414;