String to BigNumber转换,一种特殊的解决方案

时间:2012-05-16 15:27:55

标签: java type-conversion bigdecimal bignum

我正在编写一个Java程序来处理以某种伪xml格式出现的电子税表 由此产生的税额或退款将采用以下格式:13-char long无符号整数字符串,其中最后两个表示分数,即两位小数。结果是正面(付款)还是负面(退款)在其他地方显示,因此在此处不相关。

我需要将此字符串转换为BigNumber并且已经达到以下解决方案,这是一个很好的方法吗?你知道更好的解决方案吗?

public class BigDecimalTest {
    public static void main(String[] args) {

        // 0000000043272  for EUR 432.72
        String s = "0000000043272";    

        //mantissa is the amount as-is, exponent-2 since working with 2 decimal places.
        BigDecimal bd = new BigDecimal(s+"E-2"); 

        System.out.printf("%s: BigDecimal %sE-2 toString: %s\n", s, s, bd.toString());
    }
}

2 个答案:

答案 0 :(得分:2)

你也可以使用:

BigDecimal bd = new BigDecimal("1234").movePointLeft(2);

创建第二个实例,但更具可读性。

答案 1 :(得分:1)

另一种选择:

// making use of the constructor scale parameter
BigDecimal bd = new BigDecimal(new BigInteger(s), 2);