#java #double
#java #двойной #double
Вопрос:
У меня есть двойное значение, например:
double a = 12.1212123456543234;
Мне нужно проверить количество цифр после точки и отбросить все цифры с шестнадцатой. Вот мой код для получения цифр после точки:
String [] splitter = String.valueOf(a).split("\.");
Но даже если количество цифр после точки больше 15, я всегда получаю 15 цифр, а последняя цифра (пятнадцатая) заменяется неправильной. пожалуйста, помогите мне.
Ответ №1:
Double — это 64-разрядное число с плавающей запятой. И его точность ограничена 15-16 цифрами после точки, вот почему вы получаете неправильные результаты.
Если вы хотите работать с такими большими числами, вам, вероятно, понадобится BigDecimal.
BigDecimal decimal = new BigDecimal("12.1212123456543234");
Если вы хотите округлить десятичную дробь до N цифр, вы можете сделать это следующим образом:
BigDecimal decimal = new BigDecimal("12.1212123456543234");
decimal = decimal.setScale(15, RoundingMode.CEILING);
Вам также следует взглянуть на режимы округления, чтобы выбрать нужное вам округление.