显示是浮点运算溢出处理溢出,怎么回事

原文地址:浮点运算溢出处理数計算溢出处理问题、浮点运算溢出处理数1 INF和1 IND问题作者:kxbbjsw浮点运算溢出处理数计算溢出处理问题、浮点运算溢出处理数1 INF和1 IND问题热1已有61次阅读 13:09昨天遇到了一个关于浮点运算溢出处理数计算溢出处理的问题本来想用if语句把条件写好。可是遇到了很多困难上网搜了一下,发现┅个解决办法:if语句把条件写好可以但是如果遇到幂函数pow x y 时,问题就不那么简单了仔细分析将发现:y x负小数负整数0整数小数负小数无..

博主在项目中遇到了这个需求開始用的int类型进行运算,字段是存的字节然后后台进行相应的逻辑运算返回给前台,前台来转化成GB大家都知道1GB=1024MB,1MB=1024KB1KB=1024Byte,所以1GB=24=Byte。

所以问题来叻1GB的数据我后台就要存Byte,然后两个int类型进行相加直接溢出


我们先来回顾下java的8种基本数据类型,Java语言有8种基本数据类型 分别用于存储整数、浮点运算溢出处理数、字符数据和布尔类型数据。


从上图中可以看出 基本数据类型主要分为4大类 (整数类型、浮点运算溢出处理類型、char、boolean), 整数类型又分为了4小类(byte、short、int、long), 浮点运算溢出处理类型也分了2小类(float、double)这些数据类型的区别是怎样的?通过下图展示叻这8种数据类型的存储空间及使用场景:

存储字节数据(较常用)
兼容性考虑(很少使用)
存储双精度浮点运算溢出处理数(常用)
存储邏辑变量(true、false)(常用)

ok回顾完了,我们来看下int类型的数据范围-2的31次方 ~ 2的31次方-1(这个符号不好打出来反正你懂得哈哈),即- ~大约正負21个亿多些。

我1GB都十几亿了也就是说,我int类型只能运算2GB的数据对于存储文件信息显然是不行的。



这里两个long类型是不能直接进行相加的運算的所以这里用BigDecimal 封装下进行相加运算。

直接输出add也可以得到求和的数据但博主项目中返回给前台是long类型,所以进行了下类型转换add.longValue()

ok叻,希望对你有帮助

我要回帖

更多关于 浮点运算溢出处理 的文章

 

随机推荐