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

时间:2011-03-04 22:41:41

标签: java types

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

6 个答案:

答案 0 :(得分:22)

是的,请使用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

答案 1 :(得分:3)

是:java.math.BigDecimal类。

答案 2 :(得分:2)

使用BigDecimal,它提供更好的精度

答案 3 :(得分:2)

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

答案 4 :(得分:2)

您可以使用BigDecimal

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

答案 5 :(得分:0)

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

如果您的范围合适,使用long比使用BigDecimal

更快更干净