基本类型使用的场合要斟酌

11 篇文章 0 订阅

  今天生产出了一个测试环境没有测试出来的bug,有点心痛,以此记录,基本类型的合理使用很重要,出错情况为:测试1000万数据可以,但是测试1亿数据失败:失败报错了一个方法

 public  int getPartNum(int cols,int rows){

int num = (int)(Math.ceil(cols*rows*1.0/256000000)*4*2);

return num+1;

}

结果就是rows为1000万数据测试正常,到了1亿数据一直就是报错而且运行时间和报错都一样,于是看了一下调用此方法的地方,调用getPartNum(36,100000000)返回-15,啊啊啊为什么?

仔细一想原来是基本类型最大值继续增加就是负数了,2^31-1的值是 2147483647,而cols*rows为3600000000,自然而然乘积就变成了负值,后面的乘积也就是负值了所以自然也就是

解决办法:把rows的类型改为long类型就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值