日期:2014-05-16  浏览次数:20351 次

java或js中价格的数字中间有逗号的处理,以及js保留自定义或两位小数点
java
方法一:
java.util.StringTokenizer   st   =   new   StringTokenizer( "123,456,789 ", ", ");
StringBuffer   sb   =   new   StringBuffer();
while(st.hasMoreTokens())   {
        sb.append(st.nextToken());
}
方法二:
String   str=new   String( "123,456,789 ");
str   =   str.replace( ",", ""')   ;

我用的是
String   str=new   String( "123,456,789 ");
str   =   str.replaceAll( ",", ""')   ;
这样也会可能在小数点后面有多个0,这样就要保留小数点位数了,我是保留的两位,下面的方法可以实现对double和float小数点的处理
public static final DecimalFormat DF[] = {
        null, null, new DecimalFormat("#,##0.00"), null, new DecimalFormat("#,##0.0000")
    };

f(doublevalue, 4);
public static String f(double value, int s)
    {
        return !Double.isNaN(value) && value != 0.0D ? DF[s].format((new BigDecimal(value)).setScale(s, 4)) : "";
    }
f(floatvalue);
public static String f(float value)
    {
        return !Float.isNaN(value) && value != 0.0F ? DF[2].format((new BigDecimal(value)).setScale(2, 4)) : "";
    }

这样去掉逗号后就可以进行金额计算了,计算后的总金额一般都是float类型的,用下面第二点中的第5种模式再转成带逗号的String, 最终显示在页面上

js
str=str.replace(/\,/g,"");//全部替换replaceAll效果
下面就是保留自定义小数点位数(floor(str,2))和两位小数点位数(changeTwoDecimal(str))
function floor(digit, length) {
         length = length ? parseInt(length) : 0;
         if (length <= 0) return Math.floor(digit);
         digit = Math.floor(digit * Math.pow(10, length)) / Math.pow(10, length);
         return digit;
    }
    function changeTwoDecimal(x)
    {
    var f_x = parseFloat(x);
    if (isNaN(f_x))
    {
    alert('function:changeTwoDecimal->parameter error');
    return false;
    }
    var f_x = Math.round(x*100)/100;
    return f_x;
    }
再用下面的方法实现转换成带逗号的var
function formatNumber(num){ 
            if(!/^(\+|-)?(\d+)(\.\d+)?$/.test(num)){return   num;}    
            var   a   =   RegExp.$1,   b   =   RegExp.$2,   c   =   RegExp.$3;    
            var   re   =   new   RegExp().compile("(\\d)(\\d{3})(,|$)");    
            while(re.test(b))   b   =   b.replace(re,"$1,$2$3");    
            return   a +""+ b +""+ c;    
        }


下面是在网上搜索的收藏下来,以备以后不时之需
java.text.DecimalFormat类就是专门对数字进行格式化的。通过对该类的应用,可以为要输出的数字加上单位,或者控制数字的精度,用法:可以在DecimalFormat实例化时传递格式,也可通过对象调用applyPattern方