JSONArray array = JSONArray.fromObject(f)
array.toString後打印出來的是[0.10000000149011612]
解決方法:
專門寫個float類型的出來方法,然後註冊到JSON配置器中,具體如下:
package com.heivr.webapp.authority.util;
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.util.Locale;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
public class JsonFloatValueProcessor implements JsonValueProcessor {
public JsonFloatValueProcessor() { }
/**
* 處理數組類型
*/
public Object processArrayValue(Object value, JsonConfig jsonConfig) {
if (value instanceof float[]) {
String[] obj = {};
float[] nums = (float[]) value;
for (int i = 0; i < nums.length; i++) {
obj[i] = roundHalfUp(nums[i], 3);
}
return obj;
}
return value;
}
/**
* 處理單個對象
*/
public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
if (value instanceof Float) {
return roundHalfUp((Float)value, 3);
}
return value;
}
/**
* 四捨五入。
*
* @param number 數值
* @return 舍入後的數值
* @see java.text.RoundingMode.HALF_UP
*/
public String roundHalfUp(double number, int frac) {
NumberFormat fmt = NumberFormat.getInstance(Locale.CHINA);
fmt.setMaximumFractionDigits(frac);
fmt.setRoundingMode(RoundingMode.HALF_UP);
return fmt.format(number);
}
}
然後註冊處理器:
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(Float.class, new JsonFloatValueProcessor());
String resourceJSON = JSONArray.fromObject(list, jsonConfig).toString();