当我跑步时,
public static void main(String[] args)
{
float num = 145/156;
System.out.println(num);
}
我得到输出 0.0,但预期输出是 0.92948717。任何帮助表示赞赏。
当我跑步时,
public static void main(String[] args)
{
float num = 145/156;
System.out.println(num);
}
我得到输出 0.0,但预期输出是 0.92948717。任何帮助表示赞赏。
一个整数除以一个整数得到一个整数。 所以你得到 0 因为数据被截断了。
你需要输入 cast this 来浮动
float num = (float)145/156;
145/156
是0.something
,但是因为默认数字是int
在 Java 中编码的,所以你会丢失后面的内容,0
因为结果将被截断。
您应该投射其中一侧(另一侧将被隐式投射)。
利用
public static void main(String[] args)
{
float num = (float)145/156;
System.out.println(num);
}
因为,145/156
是int/int
,所以结果为 0,类型转换为浮点数,即 0.0
145 和 146 字面量是整数,/ 是整数除法。
尝试仅使用 145f(f 表示浮点数)来强制十进制除法。
为什么没有人提到较短的替代方案?
float num = 145f/156;
像145/156
这样浮动 float num = (float)145/156;
您只需要将cast
至少一个操作数转换为浮点数
float num = (float) 145 / 156;
或者
float num = 145 / (float) 156;
145
并且156
都是 type int
,因此结果被“解释”为整数(点后面的所有内容都被截断,因此 0.92948717 将变为 0),并保存到 type 的变量中float
,该变量显示为0.0
。
将两个数字中的至少一个转换为浮点数,以指示机器将结果作为浮点数处理。
float num = (float) 145 / 156;
或者,您可以在数字后加上 anf
以指示机器将数字“解释”为浮点数:
float num = 145f / 156;
在这里你正在做的就像,
int a = 145;
int b = 156;
float num = a/b;
这就是为什么你最后得到零点的原因。因此,要获得预期的输出,您必须首先按如下方式进行转换
float num = (float) a/b;
您使用的数字是整数。Java中的整数除法产生一个整数。除了将第一个数字转换为浮点数以强制转换和正确的浮点运算之外,如下所示:
float num = (float)145/156;
你也可以这样写表达式:
float num = 145f/156;
这样,通过f
在末尾添加,数字145f
被解释为浮点数。
145 和 156 都是整数,请确保至少有一个小数。例子:
float num = (145.0 / 156);