0

当我跑步时,

public static void main(String[] args)
{
   float num = 145/156;
   System.out.println(num);
}

我得到输出 0.0,但预期输出是 0.92948717。任何帮助表示赞赏。

4

11 回答 11

5

一个整数除以一个整数得到一个整数。 所以你得到 0 因为数据被截断了。

你需要输入 cast this 来浮动

float num = (float)145/156;
于 2013-10-28T11:18:30.933 回答
2

145/1560.something,但是因为默认数字是int在 Java 中编码的,所以你会丢失后面的内容,0因为结果将被截断。

您应该投射其中一侧(另一侧将被隐式投射)。

于 2013-10-28T11:19:30.283 回答
1

利用

 public static void main(String[] args)
{
  float num = (float)145/156;
  System.out.println(num);
}

因为,145/156int/int,所以结果为 0,类型转换为浮点数,即 0.0

于 2013-10-28T11:18:26.307 回答
1

145 和 146 字面量是整数,/ 是整数除法。

尝试仅使用 145f(f 表示浮点数)来强制十进制除法。

于 2013-10-28T11:21:26.310 回答
1

为什么没有人提到较短的替代方案?

float num = 145f/156;
于 2013-10-28T11:22:51.680 回答
0

145/156这样浮动 float num = (float)145/156;

于 2013-10-28T11:19:09.117 回答
0

您只需要将cast至少一个操作数转换为浮点数

float num = (float) 145 / 156;

或者

float num = 145 / (float) 156;
于 2013-10-28T11:21:31.230 回答
0

145并且156都是 type int,因此结果被“解释”为整数(点后面的所有内容都被截断,因此 0.92948717 将变为 0),并保存到 type 的变量中float,该变量显示为0.0

将两个数字中的至少一个转换为浮点数,以指示机器将结果作为浮点数处理。

float num = (float) 145 / 156;

或者,您可以在数字后加上 anf以指示机器将数字“解释”为浮点数:

float num = 145f / 156;
于 2013-10-28T11:21:58.043 回答
0

在这里你正在做的就像,

int a = 145;
int b = 156;
float num = a/b;

这就是为什么你最后得到零点的原因。因此,要获得预期的输出,您必须首先按如下方式进行转换

float num = (float) a/b;
于 2013-10-28T11:22:04.493 回答
0

您使用的数字是整数。Java中的整数除法产生一个整数。除了将第一个数字转换为浮点数以强制转换和正确的浮点运算之外,如下所示:

float num = (float)145/156;

你也可以这样写表达式:

float num = 145f/156;

这样,通过f在末尾添加,数字145f被解释为浮点数。

于 2013-10-28T11:28:48.167 回答
0

145 和 156 都是整数,请确保至少有一个小数。例子:

float num = (145.0 / 156);
于 2013-10-28T13:08:52.907 回答