论坛首页 Java企业应用论坛

类型转换精度损失

浏览 1966 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-07-28   最后修改:2009-07-28

 

 

import java.util.*;


class Hash

{

    public static void main(String[] args)

    {

        char A='a'+3;

        int i=3;

        char B='a'+i;   //错误:可能损失精度;为什么这个错了,上面的一个没错?

    }



分析:

char A='a'+3; a和3都是char类型的相加,没问题

 

 int i=3; 定义int 类型的变量i的值为3

char B='a'+i; 这种写法是错误的,int类型占用4个字节,char类型占用2个字节,JAVA是不容许int自动转换为char类型的

 

如果要强制转换是要这样写的char B=(char) ('a'+i);

 

但是这样会损失精度的 int的2进制是32位 char的2进制是16位 int强制转换为char的话,JAVA只截取int的32位的后16位,精度就这样损失了


论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics