Как увеличить счетчик в соответствии с десятичной частью действительного числа - PullRequest
0 голосов
/ 03 мая 2020

Я хочу увеличить или уменьшить счетчик в соответствии с десятичной частью действительного числа, мы не знаем его значение (мы вычисляем его значение каждый раз), это значение должно быть в диапазоне [0,1].

если действительное число имеет 1 di git после десятичной точки, счетчик будет увеличиваться на 0,1,

Например: u = 0,5, тогда cpt = 0,5 + 0,1.

, если он имеет 2 цифры после десятичной точки, счетчик будет увеличиваться с 0,01

Пример: u = 0,08, поэтому cpt = 0,08 + 0,01

также может уменьшаться таким образом. для примера:

u = 0.5 
if (instructions){
cpt = u +0.1; //0.6
}
else 
cpt = u-0.1 //0.4

но у нас может быть это:

u= 0.1
if (instructions){
cpt = u +0.1; //0.2
}
else 
cpt = u-0.01 //0.09

в этом случае мы увеличиваем с 0,1, но уменьшаем с 0,01, потому что если мы уменьшим с 0,1, у нас будет u = 0

1 Ответ

0 голосов
/ 03 мая 2020

Следующие строки хорошо работают для меня, я пробовал значения как u = 0.5 и u = 0.580070. Получив delta, вы можете либо сложить, либо вычесть, чтобы вычислить cpt.

var u = 0.5;
var exponent = BigDecimal.valueOf(u).scale();
var delta = Double.valueOf("1.0E-" + exponent).doubleValue();

. Я обнаружил, что полученное значение является более точным при использовании преобразования строк, чем при использовании экспоненциальной арифметики, такой как Math.pow(0.1, exponent), где вы получаете округление ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...