字符串处理的一些总结

工作中遇到了要将字符串转换成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()方法就是四舍五入的取整方法

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