Каков наилучший способ проверки, если значение с десятичными числами находится в определенном диапазоне

У меня есть файл с определенными пороговыми значениями, которые используются для принятия решения.

Значения выглядят так:

"thresholds":[
    { "min": 0.0, "max": 0.25, "text": "VERY UNLIKELY" },
    { "min": 0.26, "max": 0.50, "text": "UNLIKELY" }
    { "min": 0.51, "max": 0.75, "text": "LIKELY" }
    { "min": 0.76, "max": 1.0, "text": "VERY LIKELY" }
]

Состояние:

for (Threshold threshold : thresholds) {
    if ((threshold.getMin() <= predictionValue) &&
        (predictionValue <= threshold.getMax())) {
            return threshold.getText();
    }
}

Если проверяемое значение равно 0,2500000001, оно падает где-то между 0,25 и 0,26. Поэтому я спрашиваю, каков оптимальный способ определить, находится ли значение в определенном диапазоне, не имея пустого разрыва?

Должен ли я добавить параметр для точности и применить эту точность к минимальным и максимальным значениям? Я не хочу настраивать файл с такими значениями, как 0,259999999.

1 ответ

Вы попадаете в эту серую зону, потому что хотите объявить границу с 2 значениями. Это не работает. Я дам вам представление о том, как это работает:

Что ты должен делать:

"thresholds":[
    { "max": 0.25, "text": "VERY UNLIKELY" },
    { "max": 0.50, "text": "UNLIKELY" }
    { "max": 0.75, "text": "LIKELY" }
    { "max": 1.0, "text": "VERY LIKELY" }
]

И условие:

for (Threshold threshold : thresholds) {
    if (predictionValue < threshold.getMax()) {
            return threshold.getText();
    }
}

Как видите, одного значения достаточно для определения границы.

Другие вопросы по тегам