我们需要像这样回合
0.15 => 0.5
0.5 => 0.5
1 => 1
152 => 1
1538 => 1
25000 => 1
如何实现这一目标? 这就是我的尝试
decimal number = 10;
decimal rounded = Math.Ceiling(number / 10000 * 20) / 20;
如果数字是100000或更高,这不能按预期工作,因为结果为
给我10答案 0 :(得分:2)
类似的东西:
public static Double Clamp(Double n) {
return n > 1.0 ? 1.0 : n < 0 ? 0 : n;
}
然而。在这种情况下,第一个样本将是
0.15 => 0.15
因为问题是“... 到最接近的数字0..1 ”。
修改:Clamp
的扩展版本可能是这样的:
public static Double Clamp(Double value, Double min, Double max) {
//TODO: you may want to check here if min > max
return value > max ? max : value < min ? min : value;
}
public static Double Clamp(Double value) {
return Clamp(value, 0.0, 1.0);
}
如果您坚持0.15 => 0.5
,可能就是您真正想要
Clamp(value, 0.5, 1.0); // [0.5..1], not [0..1]
答案 1 :(得分:0)
我猜它应该是0.15 =&gt; 0.5,正如德米特里所说。在这种情况下,您可以这样做:
private double RoundIt(double value)
{
if (value <= 0)
return 0;
if (value >= 1)
return 1;
return value;
}