java maptodouble_Lambda表达式mapToDouble.sum精度问题
运维开发网 https://www.qedev.com
2020-03-10 18:17
出处:51CTO作者:茕茕木偶
publicstaticvoidmain(String[]args){Listdoubles=Arrays.asList(newDouble(3.3),newDouble(3.3),newDouble(3.3));doublesum=doubles.stream().mapToDouble(Double::doubleValue).sum();System.out.pr
public static void main(String[] args) {
List doubles = Arrays.asList(new Double(3.3), new Double(3.3), new Double(3.3));
double sum = doubles.stream().mapToDouble(Double::doubleValue).sum();
System.out.println(sum);// 9.899999999999999
System.out.println(formatDigit(sum,2));// 9.9
System.out.println(formatDigit_down(sum, 2)); // 9.89
List doubles1 = Arrays.asList(new Double(1.1), new Double(1.1), new Double(1.1));
double sum1 = doubles1.stream().mapToDouble(Double::doubleValue).sum();
System.out.println(sum1);// 3.3000000000000003
System.out.println(formatDigit(sum1,2));// 3.3
System.out.println(formatDigit_down(sum1, 2));// 3.3
}
/**
* 将数据转换为保留指定小数位数(0,1,2)格式的数,四舍五入
*
*/
public static double formatDigit(double num, int decimalPlace) {
DecimalFormat fm = null;
switch (decimalPlace) {
case 0:
fm = new DecimalFormat("##");
break;
case 1:
fm = new DecimalFormat("##.#");
break;
case 2:
fm = new DecimalFormat("##.##");
break;
case 3:
fm = new DecimalFormat("##.###");
break;
case 4:
fm = new DecimalFormat("##.####");
break;
default:
break;
}
if (fm == null) {
return num;
}
StringBuffer sbf = new StringBuffer();
fm.format(num, sbf, new FieldPosition(java.text.NumberFormat.FRACTION_FIELD));
return Double.parseDouble(sbf.toString());
}
/**
* 将数据转换为保留指定小数位数(0,1,2)格式的数。向下取值:如 5.567 -> 5.56 -5.567 -> -5.56
*/
public static double formatDigit_down(double num, int decimalPlace) {
DecimalFormat fm = null;
switch (decimalPlace) {
case 0:
fm = new DecimalFormat("##");
break;
case 1:
fm = new DecimalFormat("##.#");
break;
case 2:
fm = new DecimalFormat("##.##");
break;
case 3:
fm = new DecimalFormat("##.###");
break;
case 4:
fm = new DecimalFormat("##.####");
break;
default:
break;
}
if (fm == null) {
return num;
}
StringBuffer sbf = new StringBuffer();
fm.setRoundingMode(RoundingMode.DOWN);// 向下取值设置、
fm.format(num, sbf, new FieldPosition(java.text.NumberFormat.FRACTION_FIELD));
return Double.parseDouble(sbf.toString());
}
分享到
0
0
0
java maptodouble_Lambda表达式mapToDouble.sum精度问题相关推荐
- java 拉姆表达式_Java8 lambda表达式10个示例
Java 8 lambda表达式示例 转自importNew 原文链接 例1.用lambda表达式实现Runnable 我开始使用Java 8时,首先做的就是使用lambda表达式替换匿名类,而实现R ...
- Java Lambda表达式入门 1
转载请标明出处:http://blog.csdn.net/xx326664162/article/details/53930569 文章出自:薛瑄博客 我对Java 8发布非常激动,尤其是lambda ...
- Java Lambda表达式入门
本文转自:http://blog.csdn.net/renfufei... 转载请注明出处 原文链接: Start Using Java Lambda Expressions 下载示例程序 Examp ...
- java拉姆达表达式事例,Java Lambda表达式详解和实例
简介 Lambda表达式是Java SE 8中一个重要的新特性.lambda表达式允许你通过表达式来代替功能接口. lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体( ...
- 【外文翻译】外国友人写得很不错的Java Lambda表达式入门教程,我终于翻译好给大家啦!!!...
" 英语原文的链接在最底下的"阅读原文" " 简介 (译者认为: 超过 3 行的逻辑就不适用 Lambda 表达式了.虽然看着很先进,其实 Lambda 表达式 ...
- Java进阶(五十五)-Java Lambda表达式入门
原文链接: Start Using Java Lambda Expressions 下载示例程序 Examples.zip . 简介 (译者注:虽然看着很先进,其实Lambda表达式的本质只是一个 ...
- java lam表达式_详细分析Java Lambda表达式
在了解Lambda表达式之前我们先来区分一下面向对象的思想和函数式编程思想的区别 面向对象的思想: 做一件事情,找一个能解决这个事情的对象,调用他的方法来解决 函数时编程思想: 只要能获取到结果,谁去 ...
- 深入理解Java Lambda表达式,匿名函数,闭包
前言 对于Lambda表达式一直是知其然不知其所以然,为了搞清楚什么是Lambda表达式,以及Lambda表达式的用法和作用,本文应运而生当做学习笔记分享出来,欢迎指正交流. 什么是Lambda 让我 ...
- java中缀表达式转后缀表达式_数据结构Java实现06----中缀表达式转换为后缀表达式...
本文主要内容: 表达式的三种形式 中缀表达式与后缀表达式转换算法 一.表达式的三种形式: 中缀表达式:运算符放在两个运算对象中间,如:(2+1)*3.我们从小做数学题时,一直使用的就是中缀表达式. 后 ...
最新文章
- mongo在哪创建管理员_mongodb权限设置之添加管理员、普通用户的方法
- vs2013缺少Mvc 怎么办?
- 如何查看linux内核版本?(发行版本)
- MATLAB R2021a v9.10 for win 最新无限制中英文完美版 数据处理软件
- 从阿里云七代云服务器,谈云计算四大趋势
- Alpha冲刺(7/10)
- c语言读取excel表格_利用pandas处理excel表格
- paip.性能跟踪profile原理与架构与本质-- python扫带java php
- java项目连接jboss中数据库_月光软件站 - 编程文档 - Java - JBOSS3.2.5中MYSQL数据库连接池的建立与测试...
- 爬虫python 英文,python爬虫—爬取英文名以及正则表达式的介绍
- 最新版 INSPINIA IN+ - WebApp Admin Theme v2.7.1,包含asp.net MVC5示例代码,做管理系统最佳的选择。...
- ubuntu system setting no everthing
- h5课件制作_用H5做课件的好处,你知道多少?
- 关卡七、家庭收支记账系统
- Google Earth Engine APPS(GEE)——使用 AREA2 和 CODED 估算森林砍伐和退化面积(第 1 部分:运行 CODED)
- Markdown符号
- 2021年C/C++Linux服务器开发/后台架构师知识体系整理(持续更新中)
- [Processing]在画布上写文本
- 可能是你见过最强的猜数字游戏(doge
- OpenCV开发笔记(三十六):红胖子8分钟带你深入了解缩放与图像金字塔(图文并茂+浅显易懂+程序源码)