如何使用双变量

本文关键字:变量 何使用 | 更新日期: 2023-09-27 18:29:34

我需要调整双变量的值。为了做到这一点,我写了这个扩展方法

public static class Helper
{
    public static double Adjust(this double value, double l, double h)
    {
        while (value < l)
            value += h;
        while (value >= h)
            value -= h;
        return value;
    }
}

但这并没有给我预期的结果。

我在这里调用我的代码:

private void Form1_Load(object sender, EventArgs e)
{
    double a = 10.1;
    Text = a.Adjust(5,10).ToString();
}

我原以为结果是0.1,但现在是0.099999999999999646。我发现它与double数据类型的精度有关。但是我怎样才能得到0.1的结果呢?

如何使用双变量

您是对的,双数据类型不适用于数学运算。

尝试使用精确的十进制数据类型,如System.decimal

https://msdn.microsoft.com/en-us/library/system.decimal.aspx

由于floatdouble数据类型中表示的舍入数字而产生结果。非直接行为的原因是,并非每个有理数都可以在特定的浮点类型中表示,并且可表示数的"分辨率"随着绝对值的增加而降低。