2011-11-30 40 views
4

我有一個輸入文件進入我的應用程序,每行中有一些產品價格值。將文件中的字符串值解析爲float,其中字符串包含逗號

但是,當價格高於999.99時,這些值在適當的地方包含。

1,000.00 
5,432.89 

1)是否有關於將逗號貨幣價值的一套規則?逗號的地方是以什麼爲基礎決定的?

2)有沒有一個庫方法來解析這樣的字符串值爲float/double?

感謝您的閱讀!

+0

這個http://docs.oracle.com/javase/tutorial/essential/io/formatting.html – nidhin

+0

什麼原因使用float/double而不是BigDecimal,它更適合價格? –

+0

@Jon Skeet:是的..在應用程序中使用大小數!但遵循KISS的堆棧溢出! – Nik

回答

5

您可以使用DecimalFormat解析和格式化十進制數字。

逗號對應千位分隔符。這裏有一個簡單的例子,故意分析到BigDecimal而不是floatdouble - 二進制浮點數不適用於貨幣值。

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); 
    } 
} 

現在,只是使用的東西像千位分隔符和小數點分隔符默認的語言環境 - 你可能要指定一個特定的地區,如果你知道將被用於你需要解析的文件。

+0

你可以詳細解釋一下locale嗎?它如何影響格式? – Nik

+0

@NikunjChauhan:不同的文化使用不同的方式顯示數字。例如,數字「一個半」可以寫成英語1.5,但法語1.5。 –

+0

哦!得到它了!!謝謝.. – Nik

相關問題