Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 比double更精确的数字数据类型?_Java_Types - Fatal编程技术网

Java 比double更精确的数字数据类型?

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()) {

Java中是否有一种数据类型比双精度的存储十进制数更精确?

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

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

如果只需要大整数,可以使用

它们都扩展了

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

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更快、更干净