0

所以,我正在用java做一个格斗游戏,我有这个总是返回零的方程。

int x = 90/100*300;

它应该是 270 但它返回零。:|

4

6 回答 6

1

你正在做整数计算,所以 90/100 结果为 0。

如果您编写它90.0/100*300,则计算将使用双精度数完成(如果需要,您需要将其转换回 int)。

于 2013-10-02T09:04:42.510 回答
0

这里的问题是它首先除以90/100实际上0.9是,因为它是一种int类型0,然后当你乘以输出0时是。3000

于 2013-10-02T09:04:33.657 回答
0

90/100 是 0 余数 90。

您可以通过重新排列值来解决此问题

int x = 90 * 300 / 100; // 270

在除法之前做乘法,只要你没有溢出,这会更准确。

于 2013-10-02T09:05:49.387 回答
0

在这种情况下,Java 按顺序执行乘法/除法。

它还将每个数字解释为整数。

因此,90/100 = 0.9,它被截断为 0。

和 0 * 300 = 0。

所以你最终得到 0

于 2013-10-02T09:05:57.280 回答
0

您使用您使用的integer数据类型floatdouble数据类型并获得此等式的正确答案。整数数据类型仅返回十进制值答案,但浮点数和双精度数据类型返回浮点数的答案,则必须在此等式中使用浮点数或双精度数据类型。

于 2013-10-02T09:17:37.093 回答
0

我猜你想要这个等式,试试这个 int x = (90/100)*300;

于 2013-10-02T09:22:55.967 回答