如何在不删除剩余数字的情况下删除java中的十进制数

时间:2017-07-25 08:39:30

标签: java

有没有方法可以将java中的.删除为double值?

示例:

56.11124

5611124

5 个答案:

答案 0 :(得分:4)

我不认为有一种数学方法可以找出双精度中有多少小数。您可以转换为String,替换点,然后将其转换回来:

Double.parseDouble(Double.toString(56.11124).replace(".", ""));

虽然解析结果时要小心溢出!

答案 1 :(得分:1)

这可能有效

class Example {
    public static void main(String[] args) {
        double val = 56.1112;
        while( (double)((int)val) != val )
        {
            val *= 10;
        }

        System.out.printf( "%.0f", val );
    }
}

输出: 561112

这可以通过将double转换为int来截断浮动信息56.11124 => 56。当值不相等时,将它乘以基数以推出.。我不知道这是不是最好的方式。

答案 2 :(得分:1)

这是一种方法,

首先,将double转换为字符串。然后,调用replace以空字符串替换.。之后,将结果解析为int:

double d = 5.1;
String doubleString = Double.toString(5.1);
String removedDot = doubleString.replace(".", "");
int result = Integer.parseInt(removedDot);

显然,如果double的字符串表示形式为5e16等科学记数法,则不起作用。这也不适用于整数double值,例如5,因为它的字符串表示为5.0

double本质上是不准确的。 55.0值相同。这就是为什么你不能真正做这种操作。您是否期望ab的结果不同?

double a = 5;
double b = 5.0;

如果你这样做,那么你就无法真正做到这一点,因为没有办法知道程序员在运行时写的是什么。

答案 3 :(得分:0)

您可以转换为BigDecimal并使用unscaledValue方法:

BigInteger unscaled = new BigDecimal(myDouble).unscaledValue();

根据您的预期输出,您还可以使用BigDecimal#valueof(double)创建中间BigDecimal

Javadoc for BigDecimal#new(double)

Javadoc for BigDecimal#valueOf(double)

Javadoc for BigDecimal#unscaledValue()

答案 4 :(得分:-1)

您可以将其转换为String并移除.并将其转换回double类似

的内容
double value = 56.11124;
value = Double.valueOf(("" + value).replace(".", "")).doubleValue();

这将返回5611124.0,因为它有一个双倍的浮点数。您可以将其转换为int,但您必须注意可能的溢出。否则它看起来像这样

int normalized = (int) value;