Существует ли тип данных в Java, который хранит десятичный номер более точно, чем double
?
Более точный числовой тип данных, чем двойной?
Ответ 1
Да, используйте java.math.BigDecimal класс. Он может представлять цифры с большой точностью.
Если вам просто нужны огромные целые числа, вы можете вместо этого использовать java.math.BigInteger.
Они оба расширяют java.math.Number.
Вы можете даже использовать свои существующие удваивания, если вам нужно:
double d = 67.67;
BigDecimal bd = new BigDecimal(d);
И вы можете получать значения BigDecimal из баз данных с помощью JDBC:
ResultSet rs = st.executeQuery();
while(rs.next()) {
BigDecimal bd = rs.getBidDecimal("column_with_number");
}
К сожалению, поскольку Java не поддерживает перегрузку оператора, вы не можете использовать регулярные символы для обычных математических операций, как в С# и decimal
.
Вам нужно будет написать такой код:
BigDecimal d1 = new BigDecimal(67.67);
BigDecimal d2 = new BigDecimal(67.68);
BidDecimal d3 = d1.add(d2); // d1 + d2 is invalid
Ответ 2
Да: класс java.math.BigDecimal.
Ответ 3
Использование BigDecimal обеспечивает гораздо лучшую точность
Ответ 4
Да, вы можете использовать произвольный класс точности, например BigDecimal.
Ответ 5
вы можете использовать BigDecimal
Для вычисления с помощью BigDeciamls этот класс предоставляет специальные методы, которые используются вместо стандартных операторов, например. + - * / ...
, что вы от int, double и т.д....
Ответ 6
Зависит от диапазона ввода. Много раз вы можете просто использовать int или long. Для денег просто сохраните целое число пенни. int будет обрабатывать до 20 000 000,00 долларов США, что достаточно велико для моего банковского счета. долго идет намного выше.
Если ваш диапазон подходит, использование long намного быстрее и чище, чем использование BigDecimal