0

我有一个定义了阈值的文件,这些阈值用于帮助做出决定。

值如下所示:

"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 这样的值来配置文件。

4

1 回答 1

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();
    }
}

如您所见,一个值足以定义边界。

于 2017-12-07T16:07:23.060 回答