久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

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

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

瀏覽:56日期: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
相關文章:
主站蜘蛛池模板: 99久久这里只有精品 | 久久午夜综合久久 | 中国一级免费毛片 | 国产中文字幕一区 | 亚洲一区视频 | av动漫一区二区 | 国产精品伊人 | 一级片av | 欧美日本一区 | 欧美wwwsss9999 | 国产成人精品一区二 | 欧美视频在线免费 | 一本大道综合伊人精品热热 | 久久久www成人免费精品 | 国产精品久久久久久久久 | 久久99国产精品 | 欧美色v| 中国av在线| 91av视频在线 | 成人在线看片网站 | 日本亚洲最大的色成网站www | 久久成人免费视频 | 中文字幕在线一区二区三区 | 99热精品在线 | 中文久久| 一区二区三区在线播放 | 噜噜噜在线 | 日本黄色大片免费 | 黄视频入口 | 国产高清在线精品一区二区三区 | 嫩草影院永久入口 | 日韩一区二区在线观看 | 99精品欧美一区二区三区 | 亚洲高清视频在线观看 | 国产精品久久久久9999鸭 | 日本成人午夜影院 | 91麻豆精品国产91久久久资源速度 | 久久久久国 | 日本精品视频在线观看 | 麻豆国产露脸在线观看 | 国产高清毛片 |