3 回答
TA贡献1816条经验 获得超6个赞
算术中的所有操作数都不是浮点数-因此所有操作均使用整数算术完成,然后转换为浮点数。如果将适当的操作数的类型更改为浮点数,则可以正常工作:
float div = ((360 / 24f) / 60); // div is now 0.25
请注意,如果仅将60更改为浮点数,则最终会将360/24作为整数算术执行-在这种情况下可以使用,但不代表我真正的意图。基本上,您需要确保以所需的方式执行算术运算。
TA贡献1783条经验 获得超4个赞
您实际上是在做整数除法(JLS 15.17.2)。
float div = ((360 / 24) / 60);
float div = (float) ((360 / 24) / 60);
float div = (float) (15 / 60);
float div = (float) (0);
float div = 0F;
要进行浮点除法,至少一个操作数必须是浮点数字类型。
float div = ((360F / 24) / 60);
float div = 15F / 60;
float div = 0.25F;
提示:如果精度很重要double,则在转换为之前,您需要使用和进行尽可能多的计算float。实际上,除非您的分析表明您绝对需要,否则您float应该始终选择double。
float f;
f = (1E-17F * 1E-17F);
System.out.println(f); // prints "9.999999E-35"
f = (float) (1E-17D * 1E-17D);
System.out.println(f); // prints "1.0E-34"
TA贡献1873条经验 获得超9个赞
在您的主要方法中
public static void main(String[] args){
float div = ((360 / 24) / 60);
System.out.println(div);
}
注意360、24和60都是整数值。这样,您将获得怪异的值。
360/24-> 15(非常好)
15/60-> 0.4(浮点)
不幸的是,对于您来说,浮点数被截断了,因此您得到:
-> 0 (integer value)
然后,通过将0赋给浮点变量,可以将0更改为浮点值0.0。因此结果。
如果要划分它们,则需要将它们更改为浮点值。
正确的代码应如下所示:
public static void main(String[] args){
float div = ((360.0 / 24.0) / 60.0);
System.out.println(div);
}
添加回答
举报