浮点与整数之间的强制型别转换
问题描述:
我将浮点类型数据强制转换成整数类型时发现,不管浮点数类型数据多大,转换后的整数值都会呈现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回答
相似问题
登录后可查看更多问答,登录/注册
2023版Java工程师
- 参与学习 人
- 提交作业 8788 份
- 解答问题 9886 个
综合就业常年第一,编程排行常年霸榜,北上广深月薪过万! 不需要基础,无需脱产即可学习,只要你有梦想,想高薪! 全新升级:技术栈升级(包含VUE3.0,ES6,Git)+项目升级(前后端联调与功能升级)
了解课程

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星