歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java中價格的數字中間有逗號的處理

Java中價格的數字中間有逗號的處理

日期:2017/3/1 11:10:30   编辑:Linux編程

一,最近在做購物車總額計算功能總結了下,一般從服務器獲取的產品價格中小數點左邊超過3位數都有逗號出現,以此類推每隔三位一個逗號這個沒的說,在計算的時候必須去掉要不然會報數字轉換異常,下面是2種去掉逗號的方法:

方法一:
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( ",", ""') ;

我用得第二種方法,原因是簡單易懂;第二種仔細看也不難,不過加個循環,再new 個StringBuffer有點殺雞焉用宰牛刀
這樣去掉逗號後就可以進行金額計算了,計算後的總金額一般都是float類型的,用下面第二點中的第5種模式再轉成帶逗號的String, 最終顯示在頁面上

二,下面是在網上搜索的收藏下來,以備以後不時之需

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種模式有點不同

Copyright © Linux教程網 All Rights Reserved