我应该如何将小数部分分配给来自Talend中的tFileInputPositional的BigDecimal?

时间:2015-05-19 09:05:59

标签: java types casting bigdecimal talend

我正在使用Talend Open Studio进行数据集成。

我有一个创建几个字段的tFileInputPositional。其中一个看起来像这样:“+ 0000030139808303”。

我需要将这些字段保存到BigDecimal(20,2)中,以便最后两位数字是小数部分但是,当在组件的模式中键入它时,它只是在结尾处添加“,00”号。

所以,总结......
我有什么:
0000030139808303

我想要的是什么:
301398083,03

我得到了什么:
30139808303,00

有人能帮助我让它发挥作用吗? 谢谢!

2 个答案:

答案 0 :(得分:1)

如何使用 BigDecimal.movePointLeft(2)

http://www.tutorialspoint.com/java/math/bigdecimal_movepointleft.htm

答案 1 :(得分:1)

我怀疑你只想要BigDecimal.movePointLeft

  

返回一个BigDecimal,它相当于一个小数点,移动n位于左侧。如果n为非负数,则该调用仅会将n添加到该比例。如果n为否定,则该调用等同于movePointRight(-n)。此调用返回的BigDecimal值为(this × 10^-n),缩放为max(this.scale()+n, 0)

例如:

import java.math.BigDecimal;

public class Test {
    public static void main(String [] args) {
        String text = "+0000030139808303";
        BigDecimal original = new BigDecimal(text);
        BigDecimal shifted = original.movePointLeft(2);
        System.out.println(shifted);
    }    
}

输出:

301398083.03