2

当我们将双(整数)零并且点被删除时,使用 JSONObject 发送到 Web 服务

代码

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

输出

{"param":17}

我可以把带小数位的双精度数加到 JSONObject 中吗

4

2 回答 2

0

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

喜欢

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

如果你看到toString()JSONObject

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()双倍表现出意想不到的价值的原因。

于 2014-02-11T07:37:56.923 回答
0

不,最好使用这个函数,即使你将浮点数转换为双精度:

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();
    }
于 2016-04-01T07:16:35.827 回答