隨筆-71  評論-5  文章-0  trackbacks-0
           
          轉自 : http://wzf7065.iteye.com/blog/1567587



          public class StringTest {
              private static int counter = 0;
              public static void main(String[] args) {
              String str1 = "sd& ^^java***java(((java";
              String str2 = "java";
              int i = countStr(str1, str2);
              System.out.println("i---------->" + i);
              }
              /**
               * 判斷str1中包含str2的個數
                * @param str1
               * @param str2
               * @return counter
               */
              public static int countStr(String str1, String str2) {
                  if (str1.indexOf(str2) == -1) {
                 return 0;
                  } else if (str1.indexOf(str2) != -1) {
                 counter++;
                 countStr(str1.substring(str1.indexOf(str2) +
                             str2.length()), str2);
                         return counter;
                  }
                 return 0;
              }
          }
          posted @ 2015-06-23 14:47 藤本薔薇 閱讀(1431) | 評論 (0)編輯 收藏

                   select * from  table order by  id   limit    (intPage - 1) * PageRow    , intPage * PageRow




          去重SQL

          select product_code,count(*) as count from h_product_info group by product_code having count>1; 
          select d_date,count(*) as count from h_oddnum group by d_date having count>1 order by d_date desc; 
          delete from h_oddnum where id in (select min(id) from h_oddnum group by d_date having count(d_date) > 1) 
          create table tmp as select min(id) as col1 from blur_article group by title;
          delete from blur_article where id not in (select col1 from tmp); 
          drop table tmp;
          select min(id) from h_oddnum group by d_date having count(d_date) > 1
          create table tmp as select min(id) as col1 from h_oddnum group by d_date having count(d_date) > 1;
          delete from h_oddnum where id not in (select col1 from tmp); 
          drop table tmp;
          insert into h_oddnum(id,d_date,d_code) values('e1d64c5f536b4b1bbfe9f04511c01f3f','20150422172207','00001');
          posted @ 2015-05-19 17:12 藤本薔薇 閱讀(180) | 評論 (0)編輯 收藏
          posted @ 2015-05-04 10:18 藤本薔薇 閱讀(144) | 評論 (0)編輯 收藏

          只能有四位,且可以是數字和字母的混合


          [A-Za-z0-9]{4}
          posted @ 2015-04-24 11:53 藤本薔薇 閱讀(184) | 評論 (0)編輯 收藏
           double rounded = (b1.multiply(b2).multiply(b3)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

          java 四舍五入保留小數(copy)

           
          // 方式一:
          double f = 3.1516;
          BigDecimal b = new BigDecimal(f);
          double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
           
          // 方式二:
          new java.text.DecimalFormat("#.00").format(3.1415926);
          // #.00 表示兩位小數 #.0000四位小數 以此類推…
           
          // 方式三:
          double d = 3.1415926;
          String result = String.format("%.2f", d);
          // %.2f %. 表示 小數點前任意位數 2 表示兩位小數 格式后的結果為f 表示浮點型。
           
          //方法四:
          Math.round(5.2644555 * 100) * 0.01d;
          //String.format("%0" + 15 + "d", 23) 23不足15為就在前面補0

          posted @ 2015-04-24 11:47 藤本薔薇 閱讀(733) | 評論 (0)編輯 收藏

          在項目當中,對于double類型數據的使用比較頻繁。尤其是處理金錢相關的數據,在使用Double類型的數據時,涉及到精度,顯示,四舍五入等等問題。

          1.  顯示問題,當double 數據 小于 0.0001 大于等于 10000000時,直接轉為String輸出時,會顯示為科學計數法。

             1:  double double1 = 0.00009;
             2:  System.out.println(double1); // 9.0E-5
             3:         
             4:  double double2 = 10000000;
             5:  System.out.println(double2); // 1.0E7

          需要使用DecimalFormat 轉化輸出

             1:  DecimalFormat formate = new DecimalFormat("#.######");
             2:  System.out.println(formate.format(double1)); //0.00009
             3:          
             4:  formate = new DecimalFormat("########.##");
             5:  System.out.println(formate.format(double2));//10000000
           
          這里面會有四舍五入問題:
             1:  double double1 = 0.000096789;
             2:  DecimalFormat formate = new DecimalFormat("#.######");
             3:  System.out.println(formate.format(double1)); //0.000097

          當取小數點后六位時,會在第七位四舍五入。

           

          2. 誤差問題,兩個Double類型的數,進行運算。經常會產生誤差。

             1:  System.out.println(0.05 + 0.01); //0.060000000000000005
             2:  System.out.println(1.0 - 0.42);  //0.5800000000000001
             3:  System.out.println(4.015 * 100); //401.49999999999994
             4:  System.out.println(123.3 / 100); //1.2329999999999999

          看似簡單的計算,結果卻出人意料。解決方法是將Double轉為BigDecimal。調用BigDecimal的 運算。

             1:   double d1 = 0.05;
             2:   double d2 = 0.01;
             3:   BigDecimal b1 = new BigDecimal(Double.toString(d1));
             4:   BigDecimal b2 = new BigDecimal(Double.toString(d2));
             5:   System.out.println(b1.add(b2));  //0.06
           
          需要注意的是,如果new BigDecimal()時使用的是double類型的構造方法。問題依舊是可能存在的,這邊要使用String參數的構造方法。
           
          3. 兩個double比較的問題。將double數的運算結果和0比較。由于精度問題,比如if(1-0.999999999999999999 == 0.0) 這個是成立的。
           
          附上double數的運算:
             1:      /**
             2:       * 兩個Double數相加
             3:       * 
             4:       * @param v1
             5:       * @param v2
             6:       * @return
             7:       */
             8:      public static double doubleAdd(Double v1, Double v2) {
             9:   
            10:          BigDecimal b1 = new BigDecimal(v1.toString());
            11:   
            12:          BigDecimal b2 = new BigDecimal(v2.toString());
            13:   
            14:          return b1.add(b2).doubleValue();
            15:   
            16:      }
            17:   
            18:      /**
            19:       * 兩個Double數相減
            20:       * 
            21:       * @param v1
            22:       * @param v2
            23:       * @return
            24:       */
            25:      public static double doubleSub(Double v1, Double v2) {
            26:   
            27:          BigDecimal b1 = new BigDecimal(v1.toString());
            28:   
            29:          BigDecimal b2 = new BigDecimal(v2.toString());
            30:   
            31:          return b1.subtract(b2).doubleValue();
            32:   
            33:      }
            34:   
            35:      /**
            36:       * 兩個Double數相乘
            37:       * 
            38:       * @param v1
            39:       * @param v2
            40:       * @return
            41:       */
            42:      public static double doubleMul(Double v1, Double v2) {
            43:   
            44:          BigDecimal b1 = new BigDecimal(v1.toString());
            45:   
            46:          BigDecimal b2 = new BigDecimal(v2.toString());
            47:   
            48:          return b1.multiply(b2).doubleValue();
            49:   
            50:      }
            51:   
            52:      /**
            53:       * 兩個Double數相除
            54:       * 
            55:       * @param v1
            56:       * @param v2
            57:       * @return
            58:       */
            59:      public static double doubleDiv(Double v1, Double v2) {
            60:   
            61:          BigDecimal b1 = new BigDecimal(v1.toString());
            62:   
            63:          BigDecimal b2 = new BigDecimal(v2.toString());
            64:   
            65:          return b1.divide(b2, DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP)
            66:                  .doubleValue();
            67:   
            68:      }
            69:   
            70:      /**
            71:       * 兩個Double數相除,并保留scale位小數
            72:       * 
            73:       * @param v1
            74:       * @param v2
            75:       * @param scale
            76:       * @return
            77:       */
            78:      public static double doubleDiv(Double v1, Double v2, int scale) {
            79:   
            80:          if (scale < 0) {
            81:   
            82:              throw new IllegalArgumentException(
            83:   
            84:              "The scale must be a positive integer or zero");
            85:   
            86:          }
            87:          int DEF_DIV_SCALE = 10;
            88:   
            89:          BigDecimal b1 = new BigDecimal(v1.toString());
            90:   
            91:          BigDecimal b2 = new BigDecimal(v2.toString());
            92:   
            93:          return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
            94:   
            95:      }
          posted @ 2015-04-22 18:11 藤本薔薇 閱讀(180) | 評論 (0)編輯 收藏
          語句對的,但不能執行
          delete from h_oddnum where id in (select min(id) from h_oddnum group by d_date having count(d_date) > 1) 

          只能創建臨時表刪除

          create table tmp as select min(id) as col1 from h_oddnum group by d_date having count(d_date) > 1;
          delete from h_oddnum where id not in (select col1 from tmp); 
          drop table tmp;
          posted @ 2015-04-22 16:50 藤本薔薇 閱讀(141) | 評論 (0)編輯 收藏
              Date date = new Date("2014/1/10 18:20");
                  Date date2 = new Date("2014/1/11 3:5");
                  long temp = date2.getTime() - date.getTime();    //相差毫秒數
                  long hours = temp / 1000 3600;                //相差小時數
                  long temp2 = temp % (1000 3600);
                  long mins = temp2 / 1000 60;                    //相差分鐘數
                  System.out.println("date2 與 date 相差" + hours + "小時"+ mins + "分鐘");
          posted @ 2015-04-16 10:40 藤本薔薇 閱讀(137) | 評論 (0)編輯 收藏
          啟動jmeter時
          invalid or corrupt jarfile ApacheJmeter.jar  
          errorlevel=1

          后來才發現是本地jdk配置版本過低是jdk1.5
          如是將環境變量里面的java_home 里面的F:\Installed---success---go\jdk1.5改為C:\Program Files\Java\jdk1.7.0_45
          運行
          jmeter解壓文件下面bin里面的jmeter.bat 啟動成功










          posted @ 2015-04-14 10:20 藤本薔薇 閱讀(472) | 評論 (0)編輯 收藏
             BigDecimal b1 = new BigDecimal(Double.toString(service_charge*matching_term));
             BigDecimal b2 = new BigDecimal(Double.toString(0.7));
                      BigDecimal b3 = new BigDecimal(Double.toString(0.3));
                
          //利息
          Double interest = b1.multiply(b2).doubleValue();
          posted @ 2015-04-13 14:09 藤本薔薇 閱讀(129) | 評論 (0)編輯 收藏
          僅列出標題
          共8頁: 上一頁 1 2 3 4 5 6 7 8 下一頁 
          主站蜘蛛池模板: 浦城县| 临邑县| 沾化县| 岚皋县| 台中县| 甘洛县| 江西省| 龙门县| 安吉县| 南充市| 中江县| 梧州市| 周至县| 浪卡子县| 离岛区| 五原县| 河间市| 神池县| 乌兰察布市| 武山县| 芮城县| 固原市| 志丹县| 自治县| 泉州市| 河北区| 揭阳市| 沂水县| 高雄县| 永安市| 新化县| 交城县| 安陆市| 彰化市| 林口县| 济阳县| 双峰县| 平昌县| 绥阳县| 玉树县| 武安市|