Очень необычное округление - PullRequest
0 голосов
/ 14 февраля 2012

Вы когда-нибудь делали такое округление:

  • [0,95,1) раундов до 1
  • [0,90,0,95) раундов до 0,95
  • [0,85,0,90) округляет до 0,90
  • [0,80,0,85) округляет до 0,85

Я пытался сделать так:

double rounded = Math.round(x * 20.0) / 20.0;

Но это округляетнемного отличается, например, округляет 0,91 до 0,90, и мне скорее нужно округлить 0,91 до 0,95

1 Ответ

5 голосов
/ 14 февраля 2012

Номер, который вы ищете, можно найти по

  1. Умножение вашего номера на 20.
  2. Подсчет пола вашего номера.
  3. Деление вашего числа на 20.
  4. Добавление 0,05

Например, & lfloor; 0,95 * 20 & rfloor; / 20 + 0,05 = & lfloor; 19 & rfloor; / 20 + 0,05 = 0,95 + 0,05 = 1,00.

В Java:

double result = Math.floor(x * 20.0) / 20.0 + 0.05;

Надеюсь, это поможет!

...