0

我正在编写一个 Java 程序来处理一些伪 xml 格式的电子税表。
所产生的要支付或退还的税款采用以下格式: 13 字符长 无符号整数字符串,其中最后两位代表美分,即两位小数。结果是肯定的(付款)还是否定的(退款)在别处注明,因此这里不相关。

我需要将此字符串转换为 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());
    }
}
4

2 回答 2

2

您还可以使用:

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

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

于 2012-05-16T15:37:48.743 回答
1

另一种选择:

// making use of the constructor scale parameter
BigDecimal bd = new BigDecimal(new BigInteger(s), 2);  
于 2012-05-16T19:33:29.120 回答