java或js中价格的数字中间有逗号的处理,以及js保留自定义或两位小数点
- 摘要:java方法一:java.util.StringTokenizerst=newStringTokenizer("123,456,789",",");StringBuffersb=newStringBuffer();while(st.hasMoreTokens()){sb.append(st.nextToken());}方法二:Stringstr=newString("123,456,789");str=str.replace(",",""');我用的是Stringstr=newString
- 标签:Java 自定义 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方法来实现设置格式。
代码演示如下:
package formatnumber;
import java.text.DecimalFormat;
public class FormatNumber {
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat();
double data = 1234.56789;
System.out.println("格式化之前的数字: " + data);
1,String style = "0.0";//定义要显示的数字的格式
df.applyPattern(style);// 将格式应用于格式化器
System.out.println("采用style: " + style + "格式化之后: " + df.format(data));,
2,style = "00000.000 kg";//在格式后添加诸如单位等字符
df.applyPattern(style);
System.out.println("采用style: " + style + "格式化之后: " + df.format(data));
3,// 模式中的"#"表示如果该位存在字符,则显示字符,如果不存在,则不显示。
style = "##000.000 kg";
df.applyPattern(style);
System.out.println("采用style: " + style + "格式化之后: " + df.format(data));
4,// 模式中的"-"表示输出为负数,要放在最前面
style = "-000.000";
df.applyPattern(style);
System.out.println("采用style: " + style + "格式化之后: " + df.format(data));,
5,// 模式中的","在数字中添加逗号,方便读数字
style = "-0,000.0#";
df.applyPattern(style);
System.out.println("采用style: " + style + "格式化之后: " + df.format(data));
6,// 模式中的"E"表示输出为指数,"E"之前的字符串是底数的格式,
// "E"之后的是字符串是指数的格式
style = "0.00E000";
df.applyPattern(style);
System.out.println("采用style: " + style + "格式化之后: " + df.format(data));
7,// 模式中的"%"表示乘以100并显示为百分数,要放在最后。
style = "0.00%";
df.applyPattern(style);
System.out.println("采用style: " + style + "格式化之后: " + df.format(data));
8,// 模式中的"\u2030"表示乘以1000并显示为千分数,要放在最后。
style = "0.00\u2030";
//在构造函数中设置数字格式
DecimalFormat df1 = new DecimalFormat(style);
//df.applyPattern(style);
System.out.println("采用style: " + style + "格式化之后: " + df1.format(data));
}
}
程序运行结果为:
格式化之前的数字: 1234.56789
采用style: 0.0格式化之后: 1234.6
采用style: 00000.000 kg格式化之后: 01234.568 kg
采用style: ##000.000 kg格式化之后: 1234.568 kg
采用style: -000.000格式化之后: -1234.568
采用style: -0,000.0#格式化之后: -1,234.57//这个我建议用style:-0,000.00,因为最后一位用#存在时才显示,这样不统一。
采用style: 0.00E000格式化之后: 1.23E003
采用style: 0.00%格式化之后: 123456.79%
采用style: 0.00‰格式化之后: 1234567.89‰
注意:第8种模式中和之前7种模式有点不同
http://music.soso.com/player?source=1
下面是在网上搜索的收藏下来,以备以后不时之需