Отбрасывать цифры после точки двойной переменной (Java)

#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);
  

Вам также следует взглянуть на режимы округления, чтобы выбрать нужное вам округление.