所以,我正在用java做一个格斗游戏,我有这个总是返回零的方程。
int x = 90/100*300;
它应该是 270 但它返回零。:|
你正在做整数计算,所以 90/100 结果为 0。
如果您编写它90.0/100*300
,则计算将使用双精度数完成(如果需要,您需要将其转换回 int)。
这里的问题是它首先除以90/100
实际上0.9
是,因为它是一种int
类型0
,然后当你乘以输出0
时是。300
0
90/100 是 0 余数 90。
您可以通过重新排列值来解决此问题
int x = 90 * 300 / 100; // 270
在除法之前做乘法,只要你没有溢出,这会更准确。
在这种情况下,Java 按顺序执行乘法/除法。
它还将每个数字解释为整数。
因此,90/100 = 0.9,它被截断为 0。
和 0 * 300 = 0。
所以你最终得到 0
您使用您使用的integer
数据类型float
或double
数据类型并获得此等式的正确答案。整数数据类型仅返回十进制值答案,但浮点数和双精度数据类型返回浮点数的答案,则必须在此等式中使用浮点数或双精度数据类型。
我猜你想要这个等式,试试这个 int x = (90/100)*300;