日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java中float和double精度

發布時間:2024/4/17 java 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java中float和double精度 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://zhidao.baidu.com/question/344295417.html?seed=0 float與double的區別單精度浮點數在機內占4個字節,用32位二進制描述。 雙精度浮點數在機內占8個字節,用64位二進制描述。 浮點數在機內用指數型式表示,分解為:數符,尾數,指數符,指數四部分。 數符占1位二進制,表示數的正負。 指數符占1位二進制,表示指數的正負。 尾數表示浮點數有效數字,0.xxxxxxx,但不存開頭的0和點 指數存指數的有效數字。 指數占多少位,尾數占多少位,由計算機系統決定。 可能是數符加尾數占24位,指數符加指數占8位 -- float. 數符加尾數占48位,指數符加指數占16位 -- double. 知道了這四部分的占位,按二進制估計大小范圍,再換算為十進制,就是你想知道的數值范圍。 對編程人員來說,double 和 float 的區別是double精度高,有效數字16位,float精度7位。但double消耗內存是float的兩倍,double的運算速度比float慢得多,java語言中數學函數名稱double 和 float不同,不要寫錯,能用單精度時不要用雙精度(以省內存,加快運算速度) http://zhaow-381002134.iteye.com/blog/420369 使用Java,double 進行運算時,經常出現精度丟失的問題,總是在一個正確的結果左右偏0.0000**1。 特別在實際項目中,通過一個公式校驗該值是否大于0,如果大于0我們會做一件事情,小于0我們又處理其他事情。 這樣的情況通過double計算出來的結果去和0比較大小,尤其是有小數點的時候,經常會因為精度丟失而導致程序處理流程出錯。 所以一般對double類型進行運算時,做好對結果進行處理,然后拿這個值去做其他事情。 目前總結如下: /**? * 對double數據進行取精度.? * @param value? double數據.? * @param scale? 精度位數(保留的小數位數).? * @param roundingMode? 精度取值方式.? * @return 精度計算后的數據.? */? public static double round(double value, int scale, int roundingMode) {?? BigDecimal bd = new BigDecimal(value);?? bd = bd.setScale(scale, roundingMode);?? double d = bd.doubleValue();?? bd = null;?? return d;?? }?? /** * double 相加 * @param d1 * @param d2 * @return */ public double sum(double d1,double d2){ BigDecimal bd1 = new BigDecimal(Double.toString(d1)); BigDecimal bd2 = new BigDecimal(Double.toString(d2)); return bd1.add(bd2).doubleValue(); } /** * double 相減 * @param d1 * @param d2 * @return */ public double sub(double d1,double d2){ BigDecimal bd1 = new BigDecimal(Double.toString(d1)); BigDecimal bd2 = new BigDecimal(Double.toString(d2)); return bd1.subtract(bd2).doubleValue(); } /** * double 乘法 * @param d1 * @param d2 * @return */ public double mul(double d1,double d2){ BigDecimal bd1 = new BigDecimal(Double.toString(d1)); BigDecimal bd2 = new BigDecimal(Double.toString(d2)); return bd1.multiply(bd2).doubleValue(); } /** * double 除法 * @param d1 * @param d2 * @param scale 四舍五入 小數點位數 * @return */ public double div(double d1,double d2,int scale){ //? 當然在此之前,你要判斷分母是否為0,?? //? 為0你可以根據實際需求做相應的處理 BigDecimal bd1 = new BigDecimal(Double.toString(d1)); BigDecimal bd2 = new BigDecimal(Double.toString(d2)); return bd1.divide (bd2,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); } 這樣,計算double類型的數據計算問題就可以處理了。 另外補充一下 JavaScript 四舍五入的方法: 小數點問題 Math.round(totalAmount*100)/100 (保留 2 位) function formatFloat(src, pos) { return Math.round(src*Math.pow(10, pos))/Math.pow(10, pos); } 希望以上對大家有所幫助,如果說錯了,還希望大家給點指正! 與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Java中float和double精度的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。