我正在使用Jibx为我的java对象编写自己的绑定。下面是我的绑定xml中一个bigdecimal字段的块。
....
<structure field="testVO">
<value name="joiningBonus" field="joiningBonus"/>
</structure>
....
在编组时,我会获得具有更多十进制值的Bigdecimal值。下面是输出xml的块。
....
<joiningBonus>12345.45639999999912106432020664215087890625</joiningBonus>
....
如果我想要Bigdecimal(21,6)精度,如何实现它?
答案 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>
......