如何将带小数位的DOUBLE放到JSONObject中?

时间:2014-02-11 07:34:35

标签: android json double jsonobject

使用JSONObject发送到Web服务 当我们把双(圆数)放零并且点被移除

CODE

double d = 123.00;
JSONObject json = new JSONObject();
json.put("param", d);
System.out.println(json.toString());

输出

{"param":17}

我可以将带小数位的双精度放到JSONObject

2 个答案:

答案 0 :(得分:0)

使用getDouble(String name)读取该值。

喜欢

System.out.println(json.getDouble("param"));

如果您看到JSONObject的toString()

663 public String toString(int indentSpaces) throws JSONException {
664        JSONStringer stringer = new JSONStringer(indentSpaces);
665        writeTo(stringer);
666        return stringer.toString();
667    }
668
669    void writeTo(JSONStringer stringer) throws JSONException {
670        stringer.object();
671        for (Map.Entry<String, Object> entry : nameValuePairs.entrySet()) {
672            stringer.key(entry.getKey()).value(entry.getValue());
673        }
674        stringer.endObject();
675    }

writeTo()将值写为Object。所以这可能是toString()显示双重意外值的原因。

答案 1 :(得分:0)

Na,更好地使用此函数,即使你将float转换为double:

public static double roundToDouble(float d, int decimalPlace) {
        BigDecimal bd = new BigDecimal(Float.toString(d));
        bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP);
        return bd.doubleValue();
    }