我正在编写一个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());
}
}
答案 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);