我正在编写一个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());
}
}发布于 2012-05-16 23:37:49
您还可以使用:
BigDecimal bd = new BigDecimal("1234").movePointLeft(2);创建第二个实例,但更具可读性。
发布于 2012-05-17 03:33:29
另一种选择:
// making use of the constructor scale parameter
BigDecimal bd = new BigDecimal(new BigInteger(s), 2); https://stackoverflow.com/questions/10621753
复制相似问题