【问题标题】:JiBX : How to specify precision for BigdecimalJiBX:如何为 Bigdecimal 指定精度
【发布时间】:2015-07-29 07:54:02
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: xml jibx


    【解决方案1】:

    谢谢没有人回复,这为我自己解决问题铺平了道路,

    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>
    ......
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-05
      • 2013-03-05
      • 2019-02-24
      • 2020-07-28
      • 2016-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多