我一直试图解决关于风寒的这个公式,我得到结果但是我需要在小数点后面有更多的数字。无论我尝试过什么都行不通。请帮忙!
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
。我做错了什么?
答案 0 :(得分:6)
问题不在于Math.Round
,Math.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
。