在Java中摆脱十进制位置?

时间:2014-10-19 02:41:38

标签: java decimal bigdecimal

我正在阅读以下格式的PDF输入

2499.873639
32.374242
0.610059
...

现在我想摆脱小数位并让它们采用这种格式

2499873639
32374242
610059
...

我有这个代码,它用于较小的数字而不是较大的数字。较大的数字变为负数(我认为这是溢出的)并给它垃圾值。

BigDecimal b = new BigDecimal(a).multiply(new BigDecimal("1000000.")

如果我将0增加另外两个

BigDecimal b = new BigDecimal(a).multiply(new BigDecimal("100000000.")

它适用于较大的数字,但不适用于较小的数字。除了有一堆if if之外还有解决这个问题的方法吗?

4 个答案:

答案 0 :(得分:0)

使用此:

BigDecimal b = new BigDecimal(a.toString().replace('.', ''));

答案 1 :(得分:-1)

String formattedInput = (String.valueOf(input)).replace(".", "");

答案 2 :(得分:-1)

如果不是,则将double转换为String。
然后使用String.replace('.', '');
然后,如有必要,转换回int或long。

答案 3 :(得分:-1)

您可以使用字符串替换功能执行此操作。

public static BigDecimal noDecimal(BigDecimal b) {
    return new BigDecimal(b.toPlainString().replace(".", ""));
}

如果您已经有一个String而不是一个BigDecimal,可以简化为:

public static BigDecimal noDecimal(String s) {
    return new BigDecimal(s.replace(".", ""));
}