亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Java用BigDecimal解決double類型相減時可能存在的誤差

瀏覽:51日期:2022-09-01 16:17:15

double類型的兩個數相減可能存在誤差,比如System.out.println(2099 - 1999.9);的結果為99.09999999999991

可以用BigDecimal解決:

public class TestDouble { //兩個Double數相減 public static Double sub(Double d1, Double d2) { if (d1 == null || d2 == null) { return null; } BigDecimal b1 = new BigDecimal(d1.toString()); BigDecimal b2 = new BigDecimal(d2.toString()); return b1.subtract(b2).doubleValue(); } //兩個Double數相加 public static Double add(Double d1, Double d2) { if (d1 == null || d2 == null) { return null; } BigDecimal b1 = new BigDecimal(d1.toString()); BigDecimal b2 = new BigDecimal(d2.toString()); return b1.add(b2).doubleValue(); } //兩個Double數相除,并保留scale位小數 public static Double div(Double d1, Double d2, int scale) { if (d1 == null || d2 == null || scale < 0) { return null; } BigDecimal b1 = new BigDecimal(d1.toString()); BigDecimal b2 = new BigDecimal(d2.toString()); return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } // 兩個Double數相乘 public static Double mul(Double d1, Double d2) { if (d1 == null || d2 == null) { return null; } BigDecimal b1 = new BigDecimal(d1.toString()); BigDecimal b2 = new BigDecimal(d2.toString()); return b1.multiply(b2).doubleValue(); } /** * 遇到.5的情況時往上近似 * * @param d * @param scale * @return */ public static Double setDoubleScale(Double d, int scale) { if (d == null || scale < 0) { return null; } BigDecimal b = new BigDecimal(d); return b.setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } public static void main(String[] args) { Double d1 = 2099d; Double d2 = 1999.999; System.out.println(d1 - d2); System.out.println(sub(d1, d2)); System.out.println('------------------------------------'); System.out.println(d1 * d2); System.out.println(mul(d1, d2)); System.out.println('------------------------------------'); System.out.println(d1/d2); System.out.println(div(d1,d2,4)); }}

結果:

99.0009999999999899.001------------------------------------4197997.9014197997.901------------------------------------1.04950052475026251.0495

到此這篇關于Java用BigDecimal解決double類型相減時可能存在的誤差的文章就介紹到這了,更多相關Java double相減誤差內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 91在线观 | 一级特黄特色的免费大片视频 | 亚洲福利一区二区 | 1024国产视频 | 亚洲欧美日韩国产精品久久 | 国产成人精品综合久久久 | 1024手机在线观看视频 | 在线观看日本永久免费视频 | 精品日韩一区二区 | 欧美成人aaa大片 | 一级做a爰片久久毛片16 | 久久国产这里只有精品 | 国产大学生一级毛片绿象 | 丝袜捆绑调教视频免费区 | 日韩一级黄色毛片 | 国产高清色视频免费看的网址 | 三级免费毛片 | 国产国语在线播放视频 | 日本不卡免费新一二三区 | a在线观看免费 | 国产短视频精品区第一页 | 韩国r级福利视频在线观看网站 | 中文字幕亚洲综合久久男男 | 国产精品99r8免费视频2022 | 华人黄网站大全 | 国产精品网站在线进入 | 亚洲欧美国产日产综合不卡 | 色婷婷六月丁香七月婷婷 | 日韩一级a毛片欧美一级 | 一级黄色片大全 | 日韩伦理中文字幕 | 国产精品亚洲专区在线观看 | 国语自产自拍秒拍在线视频 | 狠狠综合欧美综合欧美色 | 黄色网址在线视频 | 奇米网狠狠干 | 性亚洲精品| 亚洲一级成人 | 一区二区三区免费在线视频 | 久久99亚洲综合精品首页 | 欧美日韩国产高清 |