Каков наилучший способ проверки, если значение с десятичными числами находится в определенном диапазоне
У меня есть файл с определенными пороговыми значениями, которые используются для принятия решения.
Значения выглядят так:
"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();
}
}
Как видите, одного значения достаточно для определения границы.