我试图在 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
long
s 是大整数,当你除以另一个时,你使用 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 / 10
或 1234 / 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;
我正在尝试将 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
long
s 是大整数,当你除以另一个时,你使用 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 / 10
或 1234 / 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;