麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Java > 正文

Java中如何解決double和float精度不準的問題

2019-11-06 06:09:09
字體:
來源:轉載
供稿:網友

我們知道浮點數是無法在計算機中準確表示的,例如0.1在計算機中只是表示成了一個近似值,因此,對付點數的運算時結果具有不可預知性。

在進行數字運算時,如果有double或float類型的浮點數參與計算,偶爾會出現計算不準確的情況。如以下示例代碼:

[java] view plain copy PRint?在CODE上查看代碼片package ex;    public class BigDeciTest {      public static void main(String[] args){          System.out.println(0.05+0.01);          System.out.println(1.0-0.42);          System.out.println(4.015*100);          System.out.println(123.3/100);                }    }  上述代碼執行結果如下:

[plain] view%20plain copy print?0.060000000000000005  0.5800000000000001  401.49999999999994  1.2329999999999999  在大多數情況下,使用double和float計算的結果是準確的,但是在一些精度要求很高的系統中,這種問題是非常嚴重的。

在《Effective Java》中提到一個原則,那就是float和double只能用來作科學計算或者是工程計算,但在商業計算中我們要用java.math.BigDecimal,通過使用BigDecimal類我們可以解決上述問題,實例代碼如下:

[java] view%20plain copy print?package ex;    import java.math.*;    public class BigDecimalDemo {      public static void main(String[] args){          System.out.println(ArithUtil.add(0.01, 0.05));          System.out.println(ArithUtil.sub(1.0, 0.42));          System.out.println(ArithUtil.mul(4.015, 100));          System.out.println(ArithUtil.div(123.3, 100));      }  }    class ArithUtil{      private static final int DEF_DIV_SCALE=10;            private ArithUtil(){}            public static double add(double d1,double d2){          BigDecimal b1=new BigDecimal(Double.toString(d1));          BigDecimal b2=new BigDecimal(Double.toString(d2));          return b1.add(b2).doubleValue();                }            public static double sub(double d1,double d2){          BigDecimal b1=new BigDecimal(Double.toString(d1));          BigDecimal b2=new BigDecimal(Double.toString(d2));          return b1.subtract(b2).doubleValue();                }            public static double mul(double d1,double d2){          BigDecimal b1=new BigDecimal(Double.toString(d1));          BigDecimal b2=new BigDecimal(Double.toString(d2));          return b1.mult派生到我的代碼片0.06  0.58  401.5  1.233  詳細,請參考API文檔
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产成人强伦免费视频网站 | 99精美视频| 好吊一区二区三区 | 欧美性a视频 | 久久精品亚洲精品国产欧美kt∨ | 久草免费资源视频 | 亚洲卡通动漫在线观看 | 国产精品一区在线免费观看 | 日韩毛片网站 | 欧洲色阁中文字幕 | 日本在线一区二区 | 91成人久久| 新久草视频 | 蜜桃传媒视频麻豆第一区免费观看 | 91成人午夜性a一级毛片 | 99麻豆久久久国产精品免费 | 久久国产精品电影 | 在线a| 国产电影精品久久 | 一本色道久久99精品综合蜜臀 | 日韩大片在线永久观看视频网站免费 | 久久成人精品视频 | 性高潮一级片 | 欧美综合在线观看视频 | 毛片天天看 | 成人啪啪18免费网站 | 欧美囗交 | 欧美日韩亚洲不卡 | 日韩视频一区二区 | 国人精品视频在线观看 | 欧美中文字幕在线视频 | av中文在线观看 | 国产久草视频在线 | 日韩精品中文字幕一区二区 | 精品国产一区二区三区久久久蜜月 | 黄在线观看在线播放720p | 亚洲综合91| 国产成人精品网站 | 午夜爱爱福利 | 国人精品视频在线观看 | 精久久久 |