String类型转BigDecimal类型并相加;从数据库中查询出来的String类型的数值(小数),如何转换为BigDecimal类型的,并算总和

这篇博客分享了如何处理从SQL Server数据库查询到的String类型数值转换为BigDecimal并进行精确相加的问题。作者指出,由于BigDecimal是不可变类,直接使用double可能导致精度丢失。解决方案是在Dao层中返回BigDecimal,通过`sum=sum.add(bd)`的方式累加,避免精度问题。代码示例展示了转换和计算过程。
摘要由CSDN通过智能技术生成

大家好,这是我第一次写博客,也不知道怎么写,就把我这次做项目过程中遇到的问题和经验跟大家分享哈

看代码吧

首先在Dao层中建一个interface,返回值是BigDecimal ,我才开始做的时候返回值是double的,后面算出来结果和小数点位数不正确(原因是:BigDecimal是不可变类,它的数值是固定的,add等操作只会返回一个新的对象,不会修改原来对象的数值。
所以,需要重新接收add后的值。而我直接打印sum始终值初始定义的0.),后面改成BigDecimal返回值,然后写成:sum=sum.add(bd);就可以了:
咋们来一起看看代码吧: 代码片.

// An highlighted block
public interface scllDao {
   
	public BigDecimal sum(Scll scll);
}

在Dao实现层新建一个类:代码片.

// An highlighted block
public class scllDaoImpl extends BaseDao implements scllDao{
   
@Override
	public BigDecimal sum(Scll scll) {
   
		try {
   
			openConn();
			//这个地方是使用StringBuffer拼接SQL语句,这个知识点比较老,建议别用
			StringBuffer sqlStr= new StringBuffer("select * from scll_01 where 1 = 1");
			if(scll.getFDateBeg()!=null && !"".equals(scll.getFDateBeg())){
   
				sqlStr.append(" and FDate>='"+scll.getFDateBeg()+"'");
			}
			if(scll.getFDateEnd()!=null && !"".equals(scll.getFDateEnd())){
   
				sqlStr.append(" and FDate<='"+scll.getFDateEnd(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值