我试图在 java 中将 19 位数字除以 100(19 位 number/100)

I am trying to divide a 19 digit number by 100 (19 digit number/100) in java

我正在尝试将 19 位数除以 100,即 java 中的 19 位数 number/100。它可以使用 long 数据类型进行整除,但我没有得到 17 位数字和小数点后跟另外 2 位数字的完整值。相反,我只得到 17 位数字,因为它是 long 数据类型,所以我需要像数学表达式一样的数字。

long cardValue = ("1234567891234567891");

long divide = (cardValue/100);

System.out.println(divide);

输出:12345678912345678

我需要输出为 12345678912345678.91

longs 是大整数,当你除以另一个时,你使用 integer division,它省略了小数点右边的所有内容。

您可以使用 BigDecimal 代替:

BigDecimal divide = new BigDecimal(String.valueOf(cardValue)).divide(new BigDecimal(100));

整数和长整数没有小数点。 相反,使用双。

double a = 123456789.00
double answer = (a/100.00)

参考java中的原始数据类型。

如果要获取字符串又想潜水,那么用parseDouble()方法将其转换为double。在这一步之后进行除法。

divide 变量是long 类型,这意味着没有小数,只有整数值。如果您使用双精度,您可以获得小数,但在这种情况下该类型没有您需要的精度,因为它最多提供 15 个有效数字。

您唯一的解决方案是使用 BigDecimal class。你可以获得任何你想要的数字。我们将其用于银行和会计应用程序,并且易于理解如何使用它。

HTH

首先,您要进行整数除法,然后需要一个小数值。在 Java 中,1234 / 10 导致 123,而不是 123.4。如果您想要小数结果,请将其中一个值设为小数,即 1234.0 / 101234 / 10.0。这将产生 123.4

关于你的问题,因为数字非常大,使用 BigDecimal 是一个更好的主意(不是 BigInteger,因为它会再次执行整数除法,而你想要一个小数结果)。所以,试试

BigDecimal b = new BigDecimal("1234567891234567891");
BigDecimal res = b.divide(new BigDecimal("100"));

或者你可以像

那样做一个单行
new BigDecimal("1234567891234567891").divide(new BigDecimal("100"))

第一个是res = 12345678912345678.91,另一个也是一样。 注意:虽然 BigInteger 和 BigDecimal 都包含在 java.math 包中,但如果它引发错误,请使用 import java.math.BigDecimal;