【发布时间】:2012-05-16 15:27:54
【问题描述】:
我正在编写一个 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());
}
}
【问题讨论】:
-
您可以将数字除以 100;
BigDecimal bd = new BigDecimal(s).divide(new BigDecimal(100));。如果您这样做,请将 100 存储为常量,以避免每次都创建一个新的 bigdecimal。 -
或者使用 BigDecimal.valueOf(100) 让它为你做缓存。
标签: java type-conversion bigdecimal bignum