浮点与整数之间的强制型别转换
问题描述:
我将浮点类型数据强制转换成整数类型时发现,不管浮点数类型数据多大,转换后的整数值都会呈现2147483647(2^31 -1)。但假如使用整数之间的转换,超过最大值后产生溢位,可以正常显示负数
我在想这是否跟浮点转整数会产生经度丢失有关
相关截图:
相关代码:
float f1 = 999999999999f; float f2 = 99999999999f; int a = (int)f1; short s = (short)f1; System.out.println("int a = "+a); System.out.println("short s = "+s); a = (int)f2; s = (short)f2; System.out.println("int a = "+a); System.out.println("short s = "+s); a = (int)2147483648F; s = (short)2147483648F; System.out.println("int a = "+a); System.out.println("short s = "+s); a = (int)99999999999l; s = (short)99999999999l; System.out.println("int a = "+a); System.out.println("short s = "+s);
尝试过的解决方式:
我新增加了short类型与浮点类型之间的强制转换,但结果不如int类型一般卡在最大值,而是直接进位变成-1(1111 1111 1111 1111)
20
收起
正在回答 回答被采纳积分+1
1回答
相似问题
登录后可查看更多问答,登录/注册
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星