Java 比double更精确的数字数据类型?
Java中是否有一种数据类型比双精度的存储十进制数更精确?使用BigDecimal它提供了更好的精度是的,使用类。它可以非常精确地表示数字 如果只需要大整数,可以使用 它们都扩展了 如果需要,您甚至可以使用现有的替身:Java 比double更精确的数字数据类型?,java,types,Java,Types,Java中是否有一种数据类型比双精度的存储十进制数更精确?使用BigDecimal它提供了更好的精度是的,使用类。它可以非常精确地表示数字 如果只需要大整数,可以使用 它们都扩展了 如果需要,您甚至可以使用现有的替身: double d = 67.67; BigDecimal bd = new BigDecimal(d); 您可以使用JDBC从数据库中获取BigDecimal值: ResultSet rs = st.executeQuery(); while(rs.next()) {
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类。是的,您可以使用任意精度类,例如。您可以使用
要使用BigDeciaML进行计算,该类提供了特殊的方法,可用来代替标准运算符,例如从int、double等中选择的
+-*/…
取决于您输入的范围。很多时候,您可以只使用int或long。对于金钱,只需存储整数个便士。int将处理高达20000000.00美元的款项,这对于我的银行账户来说是足够大的。长期走得更高
如果您的范围合适,那么使用long比使用BigDecimal更快、更干净