posts - 35,  comments - 7,  trackbacks - 0

          今天遇到了這樣的問題,就是浮點運算后數據比較出現錯誤,郁悶了半天,網上查了資料才發現浮點數直接用雙目運算符連接會出現結果不準確問題。解決方法如下:
          1。所有浮點運算都在數據庫內做好,也就是都用sql實現了
          2。用BigDecimal實現,方法如下(僅僅是個例子):

          import java.math.BigDecimal;

          public class tt {

           
          /**
            * 
          @param args
            
          */

           
          public static void main(String[] args) {
            
          float a = 1.1f;
            
          float b = 2.2f;
            tt t 
          = new tt();
            System.out.println(t.add(a,b));
            System.out.println(t.sub(a,b));
            System.out.println(t.mul(a,b));
            System.out.println(t.div(a,b));
            System.out.println(t.round(a));

           }

           
          public float add(float v1,float v2){//加法
             BigDecimal b1 = new BigDecimal(Float.toString(v1));
             BigDecimal b2 
          = new BigDecimal(Float.toString(v2));
             
          return b1.add(b2).floatValue();
            }


            
          public float sub(float v1,float v2){//減法
             BigDecimal b1 = new BigDecimal(Float.toString(v1));
             BigDecimal b2 
          = new BigDecimal(Float.toString(v2));
             
          return b1.subtract(b2).floatValue();
            }


            
          public float mul(float v1,float v2){//乘法
             BigDecimal b1 = new BigDecimal(Float.toString(v1));
             BigDecimal b2 
          = new BigDecimal(Float.toString(v2));
             
          return b1.multiply(b2).floatValue();
            }


            
          public float div(float v1,float v2){//除法
             BigDecimal b1 = new BigDecimal(Float.toString(v1));
             BigDecimal b2 
          = new BigDecimal(Float.toString(v2));
             
          return b1.divide(b2,3,BigDecimal.ROUND_HALF_UP).floatValue();
            }


            
          public float round(float v){//截取3位
             BigDecimal b = new BigDecimal(Float.toString(v));
             BigDecimal one 
          = new BigDecimal("1");
             
          return b.divide(one,3,BigDecimal.ROUND_HALF_UP).floatValue();
            }

          }

          posted on 2006-02-08 16:43 java小記 閱讀(279) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          <2006年2月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627281234
          567891011

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 六枝特区| 韶山市| 汉沽区| 拜泉县| 昌江| 梁平县| 河间市| 绥芬河市| 云南省| 隆化县| 漳平市| 海阳市| 双峰县| 安乡县| 电白县| 上蔡县| 奉新县| 晋江市| 农安县| 滦平县| 栾城县| 宁武县| 潞西市| 富蕴县| 丰城市| 开鲁县| 神木县| 长沙县| 通州市| 专栏| 涡阳县| 博罗县| 辽中县| 新泰市| 昌黎县| 石楼县| 鄂尔多斯市| 同江市| 东阳市| 西峡县| 万宁市|