加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

JSONArray.fromObject转换float类型的问题

发布时间:2020-12-16 19:19:26 所属栏目:百科 来源:网络整理
导读:我用JSONArray.fromObject转换一个float类型时,比如定义一个float f = 0.1f JSONArray array = JSONArray.fromObject(f) array.toString后打印出来的是[0.10000000149011612] 解决方法: 专门写个float类型的出来方法,然后注册到JSON配置器中,具体如下: p
我用JSONArray.fromObject转换一个float类型时,比如定义一个float f = 0.1f
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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读