C# .NET浮点精度是否为9位?

C# .NET浮点精度是否为9位?,c#,precision,C#,Precision,我正在将一个应用程序从.NET移植到Mono运行时,在代码中的某一点上,我可以看到一个浮点值158136.422。我对float的理解是它是7位数的精度,那么这个数字怎么可以接受呢?Mono会像我预期的那样将其修剪为7位数 如果在C#我会的 编写此代码时,它将四舍五入到158136.4。: float f = 158136.422f; 分配给f的确切值为158136.421875 在字符串表示中输出多少位是另一回事 当我使用: float f = 158136.422f; Console.Wr

我正在将一个应用程序从.NET移植到Mono运行时,在代码中的某一点上,我可以看到一个浮点值
158136.422
。我对float的理解是它是7位数的精度,那么这个数字怎么可以接受呢?Mono会像我预期的那样将其修剪为7位数

如果在C#我会的


编写此代码时,它将四舍五入到158136.4。

float f = 158136.422f;
分配给
f
的确切值为
158136.421875

在字符串表示中输出多少位是另一回事

当我使用:

float f = 158136.422f;
Console.WriteLine(f);
Console.WriteLine(f.ToString("r"));
我得到以下结果:

158136.4
158136.422

在Mono和.NET上。

您如何检查
它是否四舍五入
?请注意,谢谢!MonoDevelop必须在调试时使用ToString()监视值,而Visual Studio必须使用其他工具。
158136.4
158136.422