字符串處理的一些總結

工作中遇到了要將字符串轉換成long型數據的問題,一開始如果只是一個整形的字符串,我用Long.valueof(String s)就可以了,最後數據出現了12.23之類的數據,這時就要轉換成Double或者float類型的數據了。

還有就是遇到一個需要將字符串拆分的問題,比如12.25KB/s 我要將他存儲到數據庫當中,數據庫當中使用Double數據,因爲以後要運用到圖表當中去,所以必須使用Double而不能使用String類型將KB/s存儲進去,這時就要用到一個字符串拆分方法,並且由於有KB,有MB最終存儲到數據庫的時候統一換算成MB, 並且保留三位小數,方法如下

  /**
     * 全部解析爲以MB爲單位
     * 
     * @param rateFlow 要解析的網絡流速(12.54KB/s ,1.2MB/s)
     * @return 返回String類型的數據(0.0125 ,1.2000)
     */
    public String parseRateFlow(String rateFlow) {

        int i = 0;
        int scale = 1;// 這裏寫成0,出了錯誤,debug解決
        char character = rateFlow.charAt(i);
        while ((character >= '0' && character <= '9') || character == '.') {
            i++;
            character = rateFlow.charAt(i);
        }
        if (rateFlow.charAt(i + 1) == 'K') {
            scale = 1024;
        }
        String resultStr = rateFlow.substring(0, i);
        DecimalFormat df2 = new DecimalFormat("###.000");
        return df2.format(Double.valueOf(resultStr) / scale);
    }

返回的還是String,後面再次利用Double.valueOf()方法就可以轉換過來了。

具體這幾個方法比如valueOf還有保留小數的DecimalFormat是怎麼實現的,都是可以看看源碼的。


Method One:
      (double)(Math.round(result_value*10000)/10000.0)
這樣計算可以保留result_value小數點後四位,以此類推,1後面幾個零就是保留小數點後幾位數.
Method two:
 import java.text.DecimalFormat;
DecimalFormat df = new DecimalFormat("###.00");
System.out.println(df.format(double_value));
這樣就是保留小數點後兩位小數,如果想保留三位,則爲
DecimalFormat df = new DecimalFormat("###.000");

Math.round()方法就是四捨五入的取整方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章