Java中是否存在比double
更准确地存储十进制数的数据类型?
答案 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
更快更干净