当前位置: 首页 > news >正文

杭州微网站建设公司哪家好网站开发相关技术

杭州微网站建设公司哪家好,网站开发相关技术,网站开发一个多少钱,网站后台管理系统多少钱总览 在上一篇文章中#xff0c;我概述了为什么BigDecimal大部分时间都不是答案。 虽然可以构造double会产生错误的情况#xff0c;但在BigDecimal遇到错误的情况下构造情况也一样容易。 BigDecimal更容易正确#xff0c;但更容易出错。 轶事证据表明#xff0c;初级开发人… 总览 在上一篇文章中我概述了为什么BigDecimal大部分时间都不是答案。 虽然可以构造double会产生错误的情况但在BigDecimal遇到错误的情况下构造情况也一样容易。 BigDecimal更容易正确但更容易出错。 轶事证据表明初级开发人员在正确使用BigDecimal时不会像在四舍五入时获得两倍的麻烦一样。 但是我对此表示怀疑因为在BigDecimal中错误也容易被忽略。 让我们以这个例子为例其中double会产生错误的答案。 double d 1.00; d / 49; d * 49 * 2; System.out.println(d d);BigDecimal bd BigDecimal.ONE; bd bd .divide(BigDecimal.valueOf(49), 2, BigDecimal.ROUND_HALF_UP); bd bd.multiply(BigDecimal.valueOf(49*2)); System.out.println(bd bd); 版画 d1.9999999999999998 bd1.96 在这种情况下double看起来是错误的它需要四舍五入这将给出2.0的正确答案。 但是BigDecimal看起来正确但这不是由于表示错误。 我们可以更改除法以使用更高的精度但是尽管可以控制该误差有多小但总会出现表示错误。 您必须确保数字是实数并使用四舍五入。 即使使用BigDecimal也必须使用适当的舍入。 假设您有一笔$ 1,000,000的贷款并且每天要申请0.0005的利息。 该帐户只能有一个整数因此需要四舍五入才能使这笔钱成为实际金额。 如果不这样做需要多长时间才能产生1美分的差异 double interest 0.0005; BigDecimal interestBD BigDecimal.valueOf(interest);double amount 1e6; BigDecimal amountBD BigDecimal.valueOf(amount); BigDecimal amountBD2 BigDecimal.valueOf(amount);long i 0; do {System.out.printf(%,d: BigDecimal: $%s, BigDecimal: $%s%n, i, amountBD, amountBD2);i;amountBD amountBD.add(amountBD.multiply(interestBD).setScale(2, BigDecimal.ROUND_HALF_UP));amountBD2 amountBD2.add(amountBD2.multiply(interestBD));} while (amountBD2.subtract(amountBD).abs().compareTo(BigDecimal.valueOf(0.01)) 0); System.out.printf(After %,d iterations the error was 1 cent and you owe %s%n, i, amountBD); 最终打印 8: BigDecimal: $1004007.00, BigDecimal: $1004007.00700437675043756250390625000000000000000 After 9 iterations the error was 1 cent and you owe 1004509.00 您可以四舍五入结果但是即使您使用BigDecimal这也掩盖了您差一分钱的事实。 double最终出现表示错误 即使您使用适当的舍入double也会给您不正确的结果。 它比上一个示例晚得多。 double interest 0.0005; BigDecimal interestBD BigDecimal.valueOf(interest); double amount 1e6; BigDecimal amountBD BigDecimal.valueOf(amount); long i 0; do {System.out.printf(%,d: double: $%.2f, BigDecimal: $%s%n, i, amount, amountBD);i;amount round2(amount amount * interest);amountBD amountBD.add(amountBD.multiply(interestBD).setScale(2, BigDecimal.ROUND_HALF_UP)); } while (BigDecimal.valueOf(amount).subtract(amountBD).abs().compareTo(BigDecimal.valueOf(0.01)) 0); System.out.printf(After %,d iterations the error was 1 cent and you owe %s%n, i, amountBD); 最终打印 22,473: double: $75636308370.01, BigDecimal: $75636308370.01 After 22,474 iterations the error was 1 cent and you owe 75674126524.20 从IT角度来看我们有一个错误的误差从业务角度来看我们有一个客户超过9年没有还款并且还欠银行756亿美元足以使该银行倒闭。 如果只有IT人员使用过BigDecimal 结论 我的最终建议是您应该使用自己喜欢的东西不要忘记取整不要使用实数而不要使用任何数学运算法则例如我可以赚一分钱还是可以交易几分之一的份额。 不要忘记业务视角。 您可能会发现BigDecimal对您的公司项目或团队更有意义。 不要以为BigDecimal是唯一的方法不要以为双面问题也不适用于BigDecimal。 BigDecimal并不是最佳实践编码的门票因为自满是引入错误的肯定方法。 翻译自: https://www.javacodegeeks.com/2014/07/compounding-double-error.html
http://wiki.neutronadmin.com/news/365616/

相关文章:

  • 网站设计跟网站开发区别网站设置黑白色
  • 莱特币做空 网站如何组做网站
  • 网站建设中英版wordpress注册激活码
  • 做问卷调查赚钱的网站好宝塔 wordpress
  • 免费手机网站建设免费制作链接
  • 有没有做.net面试题的网站做网站时怎样分割
  • 在网上怎么做网站wordpress文章同步国外博客
  • 怎么做网站免费的上海市建设安全协会网站查询系统瘫
  • 瑞安外贸网站建设建设一个小说网站多少钱
  • 对接标准做好门户网站建设做网站服务器用国外的
  • 卡盟网站怎么做怎么在网站中添加百度商桥
  • 温州网站设计网站建设网站如何搭建网站后台
  • miniui做的网站做网站的那些个人工作室
  • 网站制作论文 优帮云wordpress文章版权声明
  • 太原 网站建设简约创意logo设计免费生成
  • it行业网站模板工商局网上注册公司流程
  • 巢湖自助建站系统黄冈资讯
  • 专业邯郸网站建设wordpress php apache
  • dede手机网站教程WordPress二级栏目代码
  • 淘宝网站c#设计怎么做网站外包建设 请示
  • 免费网站建设官网做电影网站服务器需求
  • 做网站有哪些按钮新手站长如何购买虚拟主机做网站
  • 如何做2级网站如何网站建设全包
  • 上海建设工程造价信息平台企业网站建设优化
  • 自己做的网站如何制作后台windows做网站服务器
  • 怎么做网站教程 建站视频商务网站建设期末考试
  • 医院网站前置审批文件移动端网站开发尺寸
  • 德阳市建设局网站上海大 小企业网站制作
  • 企业网站颜色选择备案域名回收
  • 昭通网站建设公司做企业网站软件