这是我在这里的第一篇文章,我想感谢所有能帮助我回答这个简单问题的人: 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));
    }
}这段软件在执行时会给出以下输出( 32位机器上的官方JDK6 u26 )
0
0
0.0
0.0问题是,或者说我不理解的是,最后两个结果是0.3333333,我希望是0.3333333,但显然强制转换是以另一种方式工作的:如何?
谢谢
另外,我对英语不是很熟悉,如果我犯了一些错误,我为此道歉
发布于 2011-07-04 19:36:12
首先,执行表达式1/3。这个表达式的意思是“1除以3的整数”。它的结果是整数0。然后将此结果(0)转换为双精度型(或浮点型)。当然,这也导致了0.0。
必须将除法的一个操作数转换为双精度(或浮点数),才能将其转换为双精度除法:
double d = ((double) 1) / 3;或者干脆写成
1.0 / 3发布于 2011-07-04 19:34:51
如果对整数值使用运算符/,则结果将被类型化为整数。
您必须将1或3强制为浮点值-尝试编写1.0/3而不是1/3。
发布于 2011-07-04 19:35:58
在后两种情况下,首先计算1/3,即0。然后将其转换为浮点数/双精度数。使用:
((float)1)/3https://stackoverflow.com/questions/6570884
复制相似问题