Java 将Json字符串转换为float

Java 将Json字符串转换为float,java,android,json,Java,Android,Json,我从一个网站链接获得以下JSON。我需要得到关键的“市值美元”,并将其转换为浮动。当我在下面的代码中尝试它时,它并没有以正确的数字显示出来 请给我一些建议 { "id": "bitcoin", "name": "Bitcoin", "symbol": "BTC", "rank": "1", "price_usd": "2687.17", "price_btc": "1.0", "24h_volume_usd": "1588210

我从一个网站链接获得以下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

将float更改为BigDecimal

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

mkt_cap : 44081040719.0

试着把它当作双人的

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

System.out: mkt_cap : 4.408104E10

44081040719.00在我看来像一个浮点-
String.format(“%.2f”,floatValue)它有什么问题?你把它转换成浮点(
floatValue()
),这样做会降低很多精度。你为什么要做这些转换(string->double->BigDecimal->float)?这毫无意义。float不能正确包含您的值。它对于float来说太大了,我需要将它转换为float。如果我得到mkt_cap的浮点值,那么同样issue@iappmaker哪个问题
4.408104E10
是一个非常精细的浮点值,浮点值只有6-7位精度,因此不要期望有更多的有效数字。我无法将此bigdecimal移动到浮点变量。换句话说,我需要得到存储在float中的值,当我以打印的方式显示它时,它应该被完美地读取statement@iappmaker你不能。设计的浮点不能准确地表示12位小数。您需要使用双精度(15-16位)或BigDecimal(不限位数)。无法将BigDecimal或BigInteger转换为浮点。。float不能处理大的数字。。您需要更改为BigDecimal或String来存储或显示