Java 将Json字符串转换为float
我从一个网站链接获得以下JSON。我需要得到关键的“市值美元”,并将其转换为浮动。当我在下面的代码中尝试它时,它并没有以正确的数字显示出来 请给我一些建议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
{
"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来存储或显示