首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >了解Java中的类型转换

了解Java中的类型转换
EN

Stack Overflow用户
提问于 2011-07-04 19:32:46
回答 6查看 412关注 0票数 4

这是我在这里的第一篇文章,我想感谢所有能帮助我回答这个简单问题的人: java中的造型是如何工作的?

我做了一个非常简单的类:

代码语言:javascript
复制
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 )

代码语言:javascript
复制
0
0
0.0
0.0

问题是,或者说我不理解的是,最后两个结果是0.3333333,我希望是0.3333333,但显然强制转换是以另一种方式工作的:如何?

谢谢

另外,我对英语不是很熟悉,如果我犯了一些错误,我为此道歉

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-07-04 19:36:12

首先,执行表达式1/3。这个表达式的意思是“1除以3的整数”。它的结果是整数0。然后将此结果(0)转换为双精度型(或浮点型)。当然,这也导致了0.0

必须将除法的一个操作数转换为双精度(或浮点数),才能将其转换为双精度除法:

代码语言:javascript
复制
double d = ((double) 1) / 3;

或者干脆写成

代码语言:javascript
复制
1.0 / 3
票数 9
EN

Stack Overflow用户

发布于 2011-07-04 19:34:51

如果对整数值使用运算符/,则结果将被类型化为整数。

您必须将1或3强制为浮点值-尝试编写1.0/3而不是1/3

票数 5
EN

Stack Overflow用户

发布于 2011-07-04 19:35:58

在后两种情况下,首先计算1/3,即0。然后将其转换为浮点数/双精度数。使用:

代码语言:javascript
复制
((float)1)/3
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6570884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档