2015-10-08 78 views
2

如何從Java中的字符串解析任何數字類型?如何從Java中的字符串中解析任何數字類型?

我所知道的一樣Integer.parseInt(myString)Double.parseDouble(myString),但我想最佳方法是像Number.parseNumber(myString)一個不存在的方法。我怎樣才能以另一種方式實現這種行爲? (我希望解析的數字反映字符串「完全」,例如小數位數)。

實施例:

「0」=>數(的內部整數子類)

「0.0」=>數

另外(的內部雙亞類),沒有醜陋像檢查小數分離器等。

+0

'新的BigDecimal(yourString)'。這應該給你一個代表字符串值的'Number'。 (如果你說*,但我希望它是'double',如果它是'0.0',並且'int'如果它是'0'*,我真的不明白你期望它的工作方式。變量有,你想存儲結果?) – aioobe

+0

一般來說,你不能。方法重載不允許混合返回類型。 – Phylogenesis

+0

只是爲了澄清...... Float,Double,Integer Long等都擴展了Number超類,這是抽象的,但我仍然可以擁有該類型的變量。我期望它返回一個內部是任何這些類的數字 – Joakim

回答

3
Number number = NumberFormat.getInstance().parse(myString); 

似乎這樣的伎倆......

+2

只返回長和雙。不完全是你最初所要求的。 –

+0

我在文檔中沒有看到這一點,但它足夠滿足我的需求。是的,這與我所要求的「相當」。 – Joakim

+0

它提到[這裏](http://docs.oracle.com/javase/7/docs/api/java/text/NumberFormat.html#parse(java.lang.String,%20java.text.ParsePosition))。 – Phylogenesis

0

您可能在尋找BigDecimal

請記住,一個數字可以以多種形式表示爲一個字符串。例如11.0000000的數字相同。

1

更好的辦法是使用BigDecimal類。

BigDecimal n = new BigDecimal("1.0"); 

方法需要的值

n.byteValue(); 
n.intValue(); 
n.shortValue(); 
n.longValue(); 
n.floatValue(); 
n.doubleValue();