使用NumberFormat对Double数值保留两位数小数点

需求:对double数据类型的值进行保留两位数小数点的操作

问题:报异常Could not write JSON: For input string: "15,012.69",当整数位是三位数的时候是正确的,大于三位数的时候就会产生异常。

原因:NumberFormat默认会把达到千位数值以分号,进行分割,如果后续做其他操作可能会报错

解决:调用NumberFormat的setGroupingUsed传值为false,控制NumberFormat千位分组,不让他进行分组。

原来的代码:

/**
* 土地面积
**/
@ApiModelProperty("土地面积")
private Double landArea;

transient static NumberFormat nf = NumberFormat.getNumberInstance();

public Double getLandArea() {
if (Objects.nonNull(landArea)) {
       nf.setMaximumFractionDigits(2);
       return Double.valueOf(nf.format(landArea));
   }
   return landArea;
}

修改后的代码:

    /**
     * 土地用途
     **/
    @ApiModelProperty("土地用途")
    private String landUsePurpose;


    transient static NumberFormat nf = NumberFormat.getNumberInstance();

    public Double getLandArea() {
        if (Objects.nonNull(landArea)) {
            nf.setMaximumFractionDigits(2);
            nf.setGroupingUsed(false);
            return Double.valueOf(nf.format(landArea));
        }
        return landArea;
    }

说明:NumberFormat.getInstance()方法获取到了NumberFormat对象,然后调用setMaximumFractionDigtis方法,2表示最大允许保留两位小数,
数值比较小时没有问题,但是数值较大后就出现异常,这是因为NumberFormat默认会把达到千位数值以分号,进行分割。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值