当我们将双(整数)零并且点被删除时,使用 JSONObject 发送到 Web 服务
代码
double d = 123.00;
JSONObject json = new JSONObject();
json.put("param", d);
System.out.println(json.toString());
输出
{"param":17}
我可以把带小数位的双精度数加到 JSONObject 中吗
当我们将双(整数)零并且点被删除时,使用 JSONObject 发送到 Web 服务
代码
double d = 123.00;
JSONObject json = new JSONObject();
json.put("param", d);
System.out.println(json.toString());
输出
{"param":17}
我可以把带小数位的双精度数加到 JSONObject 中吗
使用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()
双倍表现出意想不到的价值的原因。
不,最好使用这个函数,即使你将浮点数转换为双精度:
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();
}