java 可能损失精度

发布网友 发布时间:2024-10-24 08:05

我来回答

5个回答

热心网友 时间:2024-10-24 08:22

char c2 = b1 + b2;//c2是char类型,而b1,b2是byte类型。这样子是不能自动转换的。
要强制转换
char c2 = (char)(b1 + b2);

热心网友 时间:2024-10-24 08:28

char c2 = b1 + b2;
整形数据(包括byte、short、char等)参与运算后都将向int型'靠拢',该句属于int型数据对char引用的赋值,需要显式的类型转换。
char c2 = (char)(b1 + b2);

热心网友 时间:2024-10-24 08:21

public void method() {
char c1 = 65;
char c2 = b1 + b2;
System.out.print(c1);
System.out.print(c2);
}
把这段代码改成下面代码:
public void method() {
char c1 = 65;
int b3=b1+b2;
char c2 =(char)b3;
System.out.print(c1);
System.out.print(c2);
}

热心网友 时间:2024-10-24 08:26

char c2 = b1 + b2;
虽然你的b1和b2声明为byte,但在上面这行代码中,b1和b2是按int来执行的

热心网友 时间:2024-10-24 08:24

b1和b2相加会自动提升为整型int,int占四个字节,char 占两个字节,所以会发生cast的错误

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com