use*_*992 4 java floating-point precision double casting
这是我在这里发表的第一篇文章,我要感谢能够帮助我解决这个简单问题的所有人:如何在java中运行?
我做了这个非常简单的课程:
public class test {
public static void main ( String[] args )
{
System.out.println((short)(1/3));
System.out.println((int)(1/3));
System.out.println((float)(1/3));
System.out.println((double)(1/3));
}
}
Run Code Online (Sandbox Code Playgroud)
这个软件在执行时给我这个输出(linux下32位机器上的官方JDK 6 u26)
0
0
0.0
0.0
Run Code Online (Sandbox Code Playgroud)
问题,或者我不理解的事情,如果你愿意的话,最后2个结果是0.0,我期待的是0.3333333,但显然演员以另一种方式工作:怎么样?
谢谢
PS我不太熟悉英语,如果我犯了一些错误,我为此道歉
首先,1/3执行表达式.该表达意味着"1乘3的整数除法".它的结果是整数0.然后将此result(0)强制转换为double(或float).当然它会导致0.0.
您必须将除法的一个操作数强制转换为double(或float)以将其转换为双重除法:
double d = ((double) 1) / 3;
Run Code Online (Sandbox Code Playgroud)
或者简单地写
1.0 / 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
404 次 |
| 最近记录: |