一天一块钱第二天翻倍_再把钱翻倍

一天一块钱第二天翻倍

总览

很久以前,我写了一篇关于用双倍赚钱的文章。 但是,当解决方案相当简单时,仍然是许多开发人员普遍担心的问题。

用双倍赚钱的问题

double有两种类型的错误。 它存在表示错误。 即它不能精确地表示所有可能的十进制值。 即使0.1也不完全是这个值。 根据计算也有舍入误差。 即,当您执行计算时,误差会增加。

double[] ds = {0.1,0.2,-0.3,0.1 + 0.2 - 0.3};for (double d : ds) {System.out.println(d + " => " + new BigDecimal(d));
}

版画

0.1 => 0.1000000000000000055511151231257827021181583404541015625
0.2 => 0.200000000000000011102230246251565404236316680908203125
-0.3 => -0.299999999999999988897769753748434595763683319091796875
5.551115123125783E-17 => 5.5511151231257827021181583404541015625E-17

您可以看到0.1和0.2的表示形式略高于这些值,-0.3的表示形式也略高。 当您打印它们时,您得到的更好的是0.1,而不是代表的实际值0.1000000000000000055511151231257827021181583404541015625

但是,将这些值加在一起时,会得到一个比0稍高的值。

要记住的重要一点是这些错误不是随机错误。 它们是可管理的且受限制的。

修正舍入误差

像许多数据类型(例如日期)一样,您具有值的内部表示形式以及如何将其表示为字符串。

对于double来说是这样。 您需要控制如何将值表示为字符串。 由于Java对表示错误进行少量舍入并不明显,所以这可能会令人惊讶,但是,一旦对操作也产生舍入错误,就会有些震惊。

一个常见的React是假设,您对此无能为力,该错误是不可控制的,不可知的且危险的。 放弃双倍并使用BigDecimal

但是,该错误在IEE-754标准中受到限制,并且累积缓慢。

舍入结果

就像需要使用TimeZone和Local作为日期一样,您需要在转换为String之前确定结果的精度。

要解决此问题,您需要提供适当的舍入。 有了钱,这很容易,因为您知道合适的小数位数,除非您有70万亿美元,否则舍入误差不会大到无法校正的程度。

// uses round half up, or bankers' roundingpublic static double roundToTwoPlaces(double d) {return Math.round(d * 100) / 100.0;
}// ORpublic static double roundToTwoPlaces(double d) {return ((long) (d < 0 ? d * 100 - 0.5 : d * 100 + 0.5)) / 100.0;
}

如果将其添加到结果中,仍然会出现一个很小的表示错误,但是它不够大,以致Double.toString(d)无法对其进行校正。

double[] ds = {0.1,0.2,-0.3,0.1 + 0.2 - 0.3};for (double d : ds) {System.out.println(d + " to two places " + roundToTwoPlaces(d) + " => " + new BigDecimal(roundToTwoPlaces(d)));
}

版画

0.1 to two places 0.1 => 0.1000000000000000055511151231257827021181583404541015625
0.2 to two places 0.2 => 0.200000000000000011102230246251565404236316680908203125
-0.3 to two places -0.3 => -0.299999999999999988897769753748434595763683319091796875
5.551115123125783E-17 to two places 0.0 => 0

结论

如果您有一个项目标准说应该使用BigDecimal或double,则应遵循该标准。 但是,没有充分的技术理由担心会花双倍的钱。

参考:在Vanilla Java上 ,与我们的JCG合作伙伴 Peter Lawrey 再次将钱 翻倍 。

相关文章:
  • Java中的低GC:使用原语而不是包装器
  • Java Lambda语法替代
  • JVM如何处理锁
  • Erlang与Java内存架构
  • Java Fork / Join进行并行编程
  • Java最佳实践系列
  • 如何在Java中获得类似于C的性能

翻译自: https://www.javacodegeeks.com/2011/08/double-your-money-again.html

一天一块钱第二天翻倍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

移动端回到顶部

PC端回到顶部&#xff0c;很多人都是用js来写的。这样效果比较好一些了&#xff0c;但是在移动端的时候&#xff0c;就没必要搞个animate的动画了&#xff0c;然后实现回到顶部的方法也有&#xff1a;window.scrollTo(0,0)。但是更简单的就是a锚点里面href"#"&#x…

java调用接口实现的方法_java调用接口的实现方法

java调用接口的实现方法发布时间&#xff1a;2020-06-29 11:08:46来源&#xff1a;亿速云阅读&#xff1a;78作者&#xff1a;Leah本篇文章给大家分享的是有关java调用接口的实现方法&#xff0c;小编觉得挺实用的&#xff0c;因此分享给大家学习&#xff0c;希望大家阅读完这篇…

Java EE应用程序的单片到微服务重构

您是否曾经想过将现有的Java EE整体应用程序重构为基于微服务的应用程序需要做什么&#xff1f; 该博客解释了一个简单的购物车示例如何转换为基于微服务的应用程序&#xff0c;以及围绕它的一些担忧。 整体和基于微服务的应用程序的完整代码库位于&#xff1a; github.com/ar…

Java代码韦伯分布_第十五节、韦伯局部描述符(WLD,附源码)

纹理作为一种重要的视觉线索&#xff0c;是图像中普遍存在而又难以描述的特征&#xff0c;图像的纹理特征一般是指图像上地物重复排列造成的灰度值有规则的分布。纹理特征的关键在于纹理特征的提取方法。目前&#xff0c;用于纹理特征提取的方法有很多&#xff0c;最具有代表性…

windows和linux删除文件方法

Windows下bat文件内容如下&#xff1b;复制代码 代码如下: echo offforfiles -p "D:\servers\apache2.2\logs" -s -m *.log -d -15 -c "cmd /c del path"forfiles -p "D:\servers\mysql\logs" -s -m *.log -d -15 -c "cmd /c del path"…

JavaFX真实世界应用程序:欧洲电视网广播联盟

我荣幸地与今年在德累斯顿Saxonia 系统公司工作的Alexander Casall一起在JavaOne上展示了多个JavaFX Real-World应用程序。 在准备本次演讲时&#xff0c;我们向客户和合作伙伴发送了一份调查表&#xff0c;并向他们询问了一些与他们的项目&#xff0c;他们的应用程序以及他们对…

java 三大集合_java中的三大集合入门笔记(简单实用)

为什么使用集合框架如图&#xff1a;集合的好处&#xff1a;集合弥补了数组的缺陷&#xff0c;它比数组更灵活更实用&#xff0c;可大大提高软件的开发效率&#xff0c;而且不同的集合适用于不同的场合。Java集合主要分为以下3种类型Java集合框架提供了一套性能优良、使用方便的…

java POI 写入百万数据到 excel

.xls文件只支持6w的数据写入 .xlsx文件只支持104w数据的写入 在java中jxl工具类只能操作.xls的文件&#xff0c;不能操作.xlsx的文件 POI工具类能够支持.xlsx的文件操作。 excel的数据读写都相应的简单&#xff0c;网上也有很多的代码&#xff0c;我这里要说的是怎么样写入100w…

摆脱困境:将运行时配置作为JSON返回

如果需要确定部署到远程服务器的Spring Web应用程序的运行时配置&#xff0c;则需要读取从远程服务器找到的属性文件。 这很麻烦。 幸运的是&#xff0c;有更好的方法。 这篇博客文章描述了我们如何 启动我们的Web应用程序时&#xff0c;将运行时配置写入日志文件。 返回运行…

网络爬虫依赖的架包

网络爬虫依赖的架包 commons-codec-1.3.jarcommons-httpclient-3.1.jarcommons-logging-1.0.4.jarhtmllexer.jarhtmlparser.jar 转载于:https://www.cnblogs.com/aicpcode/p/4194898.html

调用布尔变量java_关于java的参数的调用,还有布尔的理解,这有一段代码,我有些不太理解,希望能够帮我分析下,谢谢...

第一段代码public class CustomerBiz {String[] namesnew String[30]; //创建学生姓名数组//实现姓名的添加public void addName(String name){for(int i0;iif(names[i]null){names[i]name;break;}}}public void showName(){ //显示姓名for(int i0;iif(names[i]!null){System.o…

优化哈希策略的简介

总览 用于哈希键的策略可以直接影响哈希集合&#xff08;例如HashMap或HashSet&#xff09;的性能。 内置的哈希函数被设计为通用的&#xff0c;并且可以在各种用例中很好地工作。 我们可以做得更好&#xff0c;特别是如果您对用例有一个很好的了解吗&#xff1f; 测试哈希策…

java中报错convension_LambdaConversionException与泛型:JVM错误?

此错误不是完全固定的。我只是LambdaConversionException在1.8.0_72中遇到了一个问题&#xff0c;发现Oracle的错误跟踪系统中有未解决的错误报告&#xff1a; link1&#xff0c;link2。(编辑&#xff1a;据报告&#xff0c;链接的错误已在JDK 9 b93中关闭)作为一种简单的解决方…

java初学者指南_Java初学者指南

java初学者指南Java编程的第一步。 对于Java中的入门教程&#xff0c;请参阅Sun的官方帮助这里 除了核心语言外&#xff0c;还有几种技术和API 介绍。 我们建议首先阅读涵盖 基础知识&#xff0c;并继续其余的教程。 我们建议&#xff1a; 保持代码简单明了且易于阅读 拆…

Java面试题2019简书_2019最新Spring面试题大全含答案之Spring Beans(2019最全Spring超级葵花宝典)...

1.什么是Spring beans&#xff1f;Spring beans 是那些形成Spring应用的主干的java对象。它们被Spring IOC容器初始化&#xff0c;装配&#xff0c;和管理。这些beans通过容器中配置的元数据创建。比如&#xff0c;以XML文件中 的形式定义。Spring 框架定义的beans都是单件bean…

javascript练习----复选框全选,全不选,反选

第一种方式&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title><style>body{color: #000}</style> <script> document.write("<ul>&quo…

使用此首选项可加快Eclipse m2e配置

谁不认识他们。 Eclipse中的旧式JFace对话框可以使您直观地看到实际上是一个相当简单的XML或属性文件。 对于m2e&#xff0c;它看起来像这样&#xff1a; 不幸的是&#xff0c;此屏幕的加载速度有点慢&#xff0c;除了检查版本号和您将永远不会更改的其他内容之外&#xff0c…

php 判断两个数组差集,php array_udiff_assoc 计算两个数组的差集实例

php array_udiff() 函数用于比较两个(或更多个)数组的键名和键值&#xff0c;并返回差集。此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于&#xff0c;等于&#xff0c;或大于第二个参数时必须分别返回一个小于零&#xff0c;等于零&#xff0c;或大于零的整…

【百度地图API】发布静态图API啦!只需一个网址,即可展示定制百度地图!

【百度地图API】发布静态图API啦&#xff01;只需一个网址&#xff0c;即可展示定制百度地图&#xff01; 原文:【百度地图API】发布静态图API啦&#xff01;只需一个网址&#xff0c;即可展示定制百度地图&#xff01;摘要&#xff1a; 百度地图静态图API&#xff01;您无须执…

脚本在流程中的性能影响

我们经常看到人们出于各种目的而使用脚本&#xff08;例如&#xff0c;在服务任务&#xff0c;执行侦听器等中&#xff09;。 使用脚本和Java逻辑通常很有意义&#xff1a; 它不需要打包到jar中并放在classpath上 它使流程定义更易于理解&#xff1a;无需查看其他文件 逻辑是…