一个关于java中的int类型存储数据范围的应用问题

8 篇文章 0 订阅
3 篇文章 0 订阅

应用背景:项目中有个业务功能是需要存储第三方的一个钱包信息(如百度钱包),包括总余额,冻结金额等信息,总余额字段单位是精确到分,所以开发经理当时设计的数据库字段类型是int类型,对应实体类Integer。那时候我们不知道第三方钱包金额到底上限是多大。

问题描述:按照这种设计开发完业务功能以后,第三方对接人在测试环境造了6千万的一个测试余额数据供我们测试。结果就报Integer的存储数据问题:NumberFormatException

 

解决方案:java中int的存储数据范围是:

最小值:Integer.MIN_VALUE= -2147483648 (-2的31次方)

最大值:Integer.MAX_VALUE= 2147483647  (2的31次方-1)

6043041655分六千多万,精确到分6043041655大于2147483647。故存储失败。

第一种解决方式:将java的Integer换为BigDecimal,将数据库字段类型换为bigint。

第二种解决方式:将java的Integer换为String,将数据库字段类型换为varchar。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值