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

歡迎訪問 生活随笔!

生活随笔

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

java

Java中float和double精度

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。