phi*_*ill 22 java floating-point double types casting
在另一个Bruce Eckel练习中,我编写的代码采用了一种方法并在另一个类中更改了值.这是我的代码:
class Big {
float b;
}
public class PassObject {
static void f(Letter y) {
y.c = 'z';
} //end f()
static void g(Big z) {
z.b = 2.2;
}
public static void main(String[] args ) {
Big t = new Big();
t.b = 5.6;
System.out.println("1: t.b : " + t.b);
g(x);
System.out.println("2: t.b: " + t.b);
} //end main
}//end class
Run Code Online (Sandbox Code Playgroud)
它抛出的错误是"可能会损失精确度".
PassObject.java:13: possible loss of precision
found: double
required : float z.b = 2.2
passobject.java:20: possible loss of precision
found : double
required : float t.b = 5.6
Run Code Online (Sandbox Code Playgroud)
不可能double
是float
s?
提前致谢
mip*_*adi 32
是的,但您必须指定它们是浮点数,否则它们被视为双打:
z.b = 2.2f
Run Code Online (Sandbox Code Playgroud)
数字末尾的'f'使其成为浮点而不是双精度.
Java不会自动将double缩小为float.
Pow*_*ord 17
不,浮动可以自动向上转换为双打,但是如果没有明确的转换,双打永远不会浮动,因为双打具有更大的范围.
浮动的范围是1.40129846432481707e-45
至3.40282346638528860e+38
双范围是4.94065645841246544e-324d
到1.79769313486231570e+308d
归档时间: |
|
查看次数: |
58688 次 |
最近记录: |