У меня есть значение double
d
и мне хотелось бы немного подтолкнуть его немного больше (или меньше), чтобы получить новое значение, которое будет как можно ближе к оригиналу, но все же строго больше (или меньше) оригинала.
Он не должен быть близок к последнему биту - более важно, что любое изменение, которое я делаю, гарантированно производит другое значение, а не назад к оригиналу.
(Этот вопрос задавали и отвечали за C, С++)
Причина, по которой я нуждаюсь в этом, заключается в том, что я преобразовываю из Double в (что-то), и у меня может быть несколько элементов с двойным значением "save", но все они должны идти индивидуально на карту.
Мой текущий код (который выполняет задание) выглядит следующим образом:
private void putUniqueScoreIntoMap(TreeMap map, Double score,
A entry) {
int exponent = 15;
while (map.containsKey(score)) {
Double newScore = score;
while (newScore.equals(score) && exponent != 0) {
newScore = score + (1.0d / (10 * exponent));
exponent--;
}
if (exponent == 0) {
throw new IllegalArgumentException("Failed to find unique new double value");
}
score = newScore;
}
map.put(score, entry);
}