2017-06-22 67 views
-2

我從網站鏈接獲取下面的JSON。我需要獲得關鍵字「market_cap_usd」並將其轉換爲浮動。當我按照下面的代碼中所提到的那樣進行嘗試時,它沒有正確輸出數字。將Json字符串轉換爲浮點數

請諮詢。

{ 
    "id": "bitcoin", 
    "name": "Bitcoin", 
    "symbol": "BTC", 
    "rank": "1", 
    "price_usd": "2687.17", 
    "price_btc": "1.0", 
    "24h_volume_usd": "1588210000.0", 
    "market_cap_usd": "44081040719.0" 
    "available_supply": "16404262.0", 
    "total_supply": "16404262.0", 
    "percent_change_1h": "0.05", 
    "percent_change_24h": "-2.05", 
    "percent_change_7d": "8.89", 
    "last_updated": "1498103956" 
}, 

Android的Java代碼

float mkt_cap = BigDecimal.valueOf(json_data.getDouble("market_cap_usd")).floatValue(); 
System.out.println("mkt_cap : "+ mkt_cap); 

輸出

System.out: mkt_cap : 4.408104E10 
+1

看起來像一個漂浮於我 - 單曲tring.format(「%。2f」,floatValue);' –

+1

它有什麼問題? – xunatai

+0

你把它轉換成一個float('floatValue()')並且這樣做會減少很多精度。 – Henry

回答

0

變化浮動爲BigDecimal。

BigDecimal mkt_cap = new BigDecimal("44081040719.0"); 
System.out.println("mkt_cap : "+ mkt_cap); 

輸出

mkt_cap : 44081040719.0 
+0

我需要將其轉換爲浮動。如果我得到mkt_cap的浮點值,那麼再次發出相同的問題 – iappmaker

+0

@iappmaker哪個問題? '4.408104E10'是一個非常好的浮點值,浮點數只有6-7位精度,所以不要期望更有效的數字。 – Henry

+0

我無法將這個bigdecimal移動到一個浮點型變量。換句話說,我需要獲取浮點值,當我在打印語句 – iappmaker

0

儘量保持它作爲一個雙

 double mkt_cap = new BigDecimal (44081040719.0).doubleValue(); 
    System.out.println(String.format("%.2f", mkt_cap)); 

輸出

44081040719.00

相關問題