JiBX:如何指定Bigdecimal的精度

时间:2015-07-29 07:54:02

标签: xml jibx

我正在使用Jibx为我的java对象编写自己的绑定。下面是我的绑定xml中一个bigdecimal字段的块。

....
<structure field="testVO">
<value name="joiningBonus" field="joiningBonus"/>
</structure>
....

在编组时,我会获得具有更多十进制值的Bigdecimal值。下面是输出xml的块。

....
<joiningBonus>12345.45639999999912106432020664215087890625</joiningBonus> 
....

如果我想要Bigdecimal(21,6)精度,如何实现它?

1 个答案:

答案 0 :(得分:0)

谢谢没有回复,它为自己解决它铺平了道路,

JiBX具有对值进行血清化和反序列化的功能。

以下是我的绑定xml的一部分

<format label="decimalFormat" type="java.math.BigDecimal"
            serializer="com.test.Formatter.serializeBigDecimal" />

这是格式说明符标记, Formatter.serializeBigdecimal是公共类中的静态方法,将在使用下面的格式时调用

<value name="joiningBonus" field="joiningBonus" format="decimalFormat"/>

以下是公共类和静态方法

public class Formatter{

    public static String serializeBigDecimal(BigDecimal joiningBonus) {
        return joiningBonus.setScale(6, BigDecimal.ROUND_HALF_UP).toString();
    }
}

以下是序列化程序的使用前和使用后的输出

在:

......
<joiningBonus>12345.3467570000054754674578454567<joiningBonus>
......

后:

......
<joiningBonus>12345.346757<joiningBonus>
......