提问人:Samet Topal 提问时间:10/30/2023 更新时间:10/30/2023 访问量:40
Android - 如何使用 java 将大数字从 jsonobject 转换为字符串?
Android - How can I convert big number to string from jsonobject using java?
问:
我有一个来自 Web 服务的响应,这个响应是一个 json 类型的字符串。我在这里使用 obj.getString() 获取STHAR_GCMIK值。
此代码最多可以正常工作 6 位值,但对于值 4000000,它返回 4.0E+7。我尝试了不同的解决方案,但失败了。如何按原样显示此处的值?
private AttrsSiparis parseSiparisBilgisi(String data) {
AttrsSiparis siparisBilgileri = new AttrsSiparis();
try {
JSONArray jsonArray = new JSONArray(data);
for(int i = 0; i < jsonArray.length(); i++)
{
JSONObject obj = jsonArray.getJSONObject(i);
Log.i(Constants.TAG, "Irsaliye Result Parse : STHAR_GCMIK " + obj.getString("STHAR_GCMIK"));
//siparisBilgileri.miktarlar.add(obj.getString("STHAR_GCMIK"));
siparisBilgileri.miktarlar.add(new BigDecimal(obj.getString("STHAR_GCMIK")).toString());
}
} catch (JSONException e) {
e.printStackTrace();
return null;
}
return siparisBilgileri;
}
答:
1赞
sweak
10/30/2023
#1
如何按原样显示此处的值?
我猜你说的是显示已经解析的.如果是这样,那么如果您正在记录或打印它,它将使用其 toString()
方法。此方法默认使用科学记数法。BigDecimal
如果你想按原样显示数字,你必须使用 toPlainString()
方法 - 它不使用科学记数法。
评论
0赞
Samet Topal
10/30/2023
非常感谢你,先生。我首先将传入的数据转换为双精度类型,然后将其格式化为字符串类型,从而解决了此错误。siparisBilgileri.miktarlar.add(String.format("%.0f",Double.parseDouble(obj.getString("STHAR_GCMIK"))));
1赞
Lajos Arpad
10/30/2023
#2
您可以将其格式化为 via,然后将其转换为 .double
.getDouble("STHAR_GCMTK")
String
评论
1赞
Samet Topal
11/1/2023
我用双重解析解决了问题,然后按照你说的格式化:siparisBilgileri.miktarlar.add(String.format("%.0f",Double.parseDouble(obj.getString("STHAR_GCMIK"))));
评论
obj.getString("STHAR_GCMIK")
BigDecimal
obj.getString("STHAR_GCMIK")
obj.getObject("STHAR_GCMIK")
obj.getLong("STHAR_GCMIK")