JAVA处理大数据的运算保留小数问题

本文介绍在处理大数据运算时遇到的小数保留问题,并通过使用BigDecimal类进行解决的方法,确保计算结果的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做项目遇到一个处理大数据的运算及保留小数问题,

比如:

double a = 2341930134413.0;
double b = 982332323233.987656;
double c = a*b;
//算出的结果:2.3005536697896073E24

 以上计算明显不是想要的结果,为了解决这个问题,需要引入BigDecimal类来作处理。

比如:

double a = 2341930134413.0;
double b = 982332323233.987656;
BigDecimal _a = new BigDecimal(a);
BigDecimal _b = new BigDecimal(b);
String c = _a.multiply(_b).toString();
//算出的结果:2300553669789607308957162.5428466796875

 接下来要处理保留小数位的问题,保留1位小数,此时不能用double来参与计算,因为其精度无法满足时会出现上面类似的情况,通常用字符串String接收,具体代码如下:

double a = 2341930134413.0;
double b = 982332323233.987656;
BigDecimal _a = new BigDecimal(a);
BigDecimal _b = new BigDecimal(b);
BigDecimal c = _a.multiply(_b);
String d = c.setScale(1, BigDecimal.ROUND_HALF_UP).toString();
//算出的结果:2300553669789607308957162.5

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值