如何四舍五入到0-1之间最接近的数字

本文关键字:最接近 数字 之间 四舍五入 | 更新日期: 2023-09-27 18:12:49

我们需要像这样舍入

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;

如果number为100000或更大,则不像预期的那样工作,因为给我10作为结果

如何四舍五入到0-1之间最接近的数字

像这样:

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]

我猜应该是0.15 => 0.5,就像Dmitry说的。在这种情况下,您可以这样做:

private double RoundIt(double value)
{
    if (value <= 0)
        return 0;
    if (value >= 1)
        return 1;
    return value;
}