工作中遇到了要將字符串轉換成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是怎麼實現的,都是可以看看源碼的。