Wind Chill C#最终号码需要更多数字

时间:2016-01-31 22:39:52

标签: c# decimal point

我一直试图解决关于风寒的这个公式,我得到结果但是我需要在小数点后面有更多的数字。无论我尝试过什么都行不通。请帮忙!

static void Main()
{
    double temp = 20;
    double wind = 7;

    double windChill = 35.74 + 0.6215 * temp + (0.4275 * temp - 35.75) * Math.Pow(wind, 0.16);

    Console.WriteLine("so wind_chill = {0}", Math.Round(windChill, 15));
}

在此我得到最终号码11.03490062551,但我想要11.034900625509998。我做错了什么?

1 个答案:

答案 0 :(得分:6)

问题不在于Math.RoundMath.Round实际上会给你11.034900625509991,我想这就是你想要的。

问题在于Console.WriteLine,它是导致精度损失的方法(因为在内部,它调用string.Format实际上导致精度损失)。

要解决此问题,请使用round-trip format specifier,如下所示:

Console.WriteLine("so wind_chill = {0:R}", Math.Round(windChill, 15));

请注意windChill的值应该足够好了。无需拨打Math.Round