比double更精确的数值数据类型?

Java中是否存在比double精度更精确地存储十进制数的数据类型?

是的,使用java.math.BigDecimal类。 它可以非常精确地表示数字。

如果您只需要大整数,则可以使用java.math.BigInteger 。

它们都扩展了java.math.Number 。

如果需要,您甚至可以使用现有的双打:

 double d = 67.67; BigDecimal bd = new BigDecimal(d); 

您可以使用JDBC从数据库中获取BigDecimal值:

 ResultSet rs = st.executeQuery(); while(rs.next()) { BigDecimal bd = rs.getBigDecimal("column_with_number"); } 

遗憾的是,由于Java不支持运算符重载,因此不能像C#和decimal类型那样使用常规符号进行常见的数学运算。

您需要编写如下代码:

 BigDecimal d1 = new BigDecimal(67.67); BigDecimal d2 = new BigDecimal(67.68); BidDecimal d3 = d1.add(d2); // d1 + d2 is invalid 

是:java.math.BigDecimal类。

使用BigDecimal它可以提供更好的精度

是的,您可以使用任意精度类,如BigDecimal 。

你可以使用BigDecimal

要使用BigDeciamls进行计算,这个类提供了一些特殊的方法来代替标准运算符,例如+ - * / ...来自int,double等…

取决于您的输入范围。 很多时候,你可以使用int或long。 为了钱,只需存储整数个便士。 int将处理最高20,000,000.00美元,这对我的银行账户来说足够大。 长得多。

如果您的范围合适,使用long比使用BigDecimal更快更干净