浏览 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位,精度就这样损失了 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |