C# 浮点计算显示输出与调试结果不同

C# 浮点计算显示输出与调试结果不同,c#,C#,我很难理解为什么c#中的计算在控制台窗口中显示的结果与调试中的结果不同 以下代码在控制台0.1647513和调试0.164751321中显示0.1647513 var v = (float) (0.172731235 + -0.200918653*0.04 + 0.03552264*0.04*0.04); Console.WriteLine(v); Console.ReadKey(); 有人能解释一下吗 谢谢我想答案是: 基本上,默认情况下,浮点

我很难理解为什么c#中的计算在控制台窗口中显示的结果与调试中的结果不同

以下代码在控制台0.1647513和调试0.164751321中显示0.1647513

        var v = (float) (0.172731235 + -0.200918653*0.04 + 0.03552264*0.04*0.04);
        Console.WriteLine(v);
        Console.ReadKey();
有人能解释一下吗


谢谢

我想答案是:

基本上,默认情况下,浮点值包含7位数字(您在输出中看到的数字),但它也可以包含9位数字(您在中断执行并查看时看到的数字)


尝试
Console.WriteLine(v.ToString(“G9”);
并查看它是否打印相同的内容。您给出的代码在控制台中没有显示任何内容。也不清楚“in debug”是什么意思。此链接可以帮助您:抱歉,我更新了代码。我所说的调试是在我中断代码并计算变量“v”时调试器只是显示了更多的数字。对于
float
,这些数字是不相关的,因为它们超出了此处数据类型的精确范围。请记住,这是二进制浮点,而不是十进制,因此十进制表示法几乎总是长得多,但没有为simonalexander2005的答案添加任何精度等级,尽管直到我不明白为什么显示结果与实际值不同的好处。