Double数据运算过程中精度调整
Double数据进行运算时,容易出现多位小数的精度问题
①问题现象

②解决方案
- 使用BigDecimal类型来进行Double类型数据运算
- 创建BigDecimal类型对象时将Double类型的数据转换为字符串
//Cart类:
// 计算总金额
public Double getTotalAmount() { // 1.声明一个变量用于存储累加结果
BigDecimal sum = new BigDecimal("0.0"); // 2.遍历Map集合
Set<String> keySet = cartItemMap.keySet(); for (String key : keySet) {
CartItem cartItem = cartItemMap.get(key);
Double amount = cartItem.getAmount(); sum = sum.add(new BigDecimal(amount + ""));
} // 3.返回累加结果
return sum.doubleValue(); }
//CartItem类: // 获取金额时需要计算得到
public Double getAmount() { BigDecimal bigDecimalCount = new BigDecimal(this.count + "");
BigDecimal bigDecimalPrice = new BigDecimal(this.price + ""); BigDecimal multiReuslt = bigDecimalCount.multiply(bigDecimalPrice); return multiReuslt.doubleValue();
}
Double数据运算过程中精度调整的更多相关文章
- 什么是Spark(四)运算过程中的黑科技
Spark在运算过程中提供了一套完整的机制用来提高效率. 1. 用于收集信息的Accumulator,自带增量,用于spark全局收集数据:共享数据: 2. 用于提高传输速率的broadcast机制: ...
- Double 类型运算时的精度问题
double 类型运算时的 计算的精度不高,常常会出现0.999999999999999这种情况,那么就须要用BigDecimal 它是java提供的用来高精度计算的工具类 以下是对这个类的一个包 ...
- 解决vue数据渲染过程中的闪动问题
关键代码 主要解决vue双大括号{{}}在数据渲染和加载过程中的闪动问题,而影响客服体验. html代码: <span class="tableTitle selftab" ...
- C语言 float、double数据在内存中的存储方式
float在内存中占4个字节(32bit),32bit=符号位(1bit)+指数位(8bit)+底数位(23bit) 指数部分 指数位占8bit,可以表示数值的范围是0-(表示0~255一共256个数 ...
- double 类型运算会出现精度问题
要先转换为字符串,后进行运算,可以写个方法做乘法运算public static double mul(double v1,double v2){BigDecimal b1 = new BigDecim ...
- map在遍历数据的过程中删除数据不出错
// Iterator<Map.Entry<String,Long>> entries = Map.entrySet().iterator(); ...
- Django数据同步过程中遇到的问题:
1.raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__ve ...
- 基本类型包装类、System类、Math类、Arrays类、大数据运算
1 基本类型包装类 Java中想对8种基本数据类型进行复杂操作很困难. 实际程序界面上用户输入的数据都是以字符串类型进行存储的. 程序开发中,需要把字符串转换成指定的基本数据类型. 1.1基本数据类型 ...
- python与机器学实践-何宇健 源代码及过程中遇到的问题
# -*- coding: utf-8 -*-"""Spyder EditorThis is a temporary script file.""&q ...
随机推荐
- 小白之Python基础(二)
一.字符串 1.字符串编码发展: 1)ASCII码: 一个字节去表示 (8个比特(bit)作为一个字节(byte),因此,一个字节能表示的最大的整数就是255(二进制11111111 = 十进制255 ...
- boot issue
Q:生产过程中不小心把 boot文件删除了 ,或者升级kenerl时发现版本不兼容,需要回退,此时没有快照备份情况如何操作? A:boot 主要文件是内核和grub引导文件 修复方法: 1.进入救 ...
- Dubbo源码(七) - 集群
前言 本文基于Dubbo2.6.x版本,中文注释版源码已上传github:xiaoguyu/dubbo 集群(cluster)就是一组计算机,它们作为一个总体向用户提供一组网络资源.这些单个的计算机系 ...
- Linux 13 配置服务自启动
参考源 https://www.bilibili.com/video/BV187411y7hF?spm_id_from=333.999.0.0 版本 本文章基于 CentOS 7.6 准备 我们通常的 ...
- 论文翻译:2020_Lightweight Online Noise Reduction on Embedded Devices using Hierarchical Recurrent Neural Networks
论文地址:基于分层递归神经网络的嵌入式设备轻量化在线降噪 引用格式:Schröter H, Rosenkranz T, Zobel P, et al. Lightweight Online Noise ...
- 在vue项目中使用UEditor--plus
1:UEditor-plus富文本编辑器如何在vue项目中使用 备注:UEditor是由百度web前端研发部开发的所见即所得的开源富文本编辑器,由于该项目不在维护:程序员自发对其进行了维护,详见 ht ...
- CF1167F Scalar Queries (线段树/树状数组)
题意 题解 对于[l,r]中的一个数,不论[l,r]有多大,只有比它小的数可以影响到它的排名,那么就可以把ai从小到大排序,一个一个加入线段树中,线段树中下表为 i 的是ai(原来的位置,不是排序后的 ...
- shellcode 注入执行技术学习
shellcode 注入执行技术学习 注入执行方式 CreateThread CreateRemoteThread QueueUserAPC CreateThread是一种用于执行Shellcode的 ...
- 【Matlab】学习记录1-简单的函数介绍
sind(30) %正弦函数,以角度为单位 ans =0.5000 exp(2) %以e为底的指数函数,即e^x ans =7.3891 log10(10) ans =1log(exp(1)) ...
- 什么?MySQL 8.0 会同时修改两个ib_logfilesN 文件?
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GreatSQL是MySQL的国产分支版本,使用上与MySQL一致. 作者介绍:孙黎,GreatDB 认证DBA 问题现象 ...