我有一個輸入文件進入我的應用程序,每行中有一些產品價格值。將文件中的字符串值解析爲float,其中字符串包含逗號
但是,當價格高於999.99時,這些值在適當的地方包含。
1,000.00
5,432.89
等
1)是否有關於將逗號貨幣價值的一套規則?逗號的地方是以什麼爲基礎決定的?
2)有沒有一個庫方法來解析這樣的字符串值爲float/double?
感謝您的閱讀!
我有一個輸入文件進入我的應用程序,每行中有一些產品價格值。將文件中的字符串值解析爲float,其中字符串包含逗號
但是,當價格高於999.99時,這些值在適當的地方包含。
1,000.00
5,432.89
等
1)是否有關於將逗號貨幣價值的一套規則?逗號的地方是以什麼爲基礎決定的?
2)有沒有一個庫方法來解析這樣的字符串值爲float/double?
感謝您的閱讀!
您可以使用DecimalFormat
解析和格式化十進制數字。
逗號對應千位分隔符。這裏有一個簡單的例子,故意分析到BigDecimal
而不是float
或double
- 二進制浮點數不適用於貨幣值。
import java.math.*;
import java.text.*;
public class Test {
public static void main(String[] args) throws Exception {
DecimalFormat format = new DecimalFormat();
format.setParseBigDecimal(true);
BigDecimal value = (BigDecimal) format.parse("1,234.56");
System.out.println(value);
}
}
現在,只是使用的東西像千位分隔符和小數點分隔符默認的語言環境 - 你可能要指定一個特定的地區,如果你知道將被用於你需要解析的文件。
這個http://docs.oracle.com/javase/tutorial/essential/io/formatting.html – nidhin
什麼原因使用float/double而不是BigDecimal,它更適合價格? –
@Jon Skeet:是的..在應用程序中使用大小數!但遵循KISS的堆棧溢出! – Nik