.NET Float Precision似乎是9位数?

use*_*833 2 c# precision

我正在将一个应用程序从.NET移植到Mono Runtime,并且在代码中的某一点我可以看到浮点数具有该值158136.422.我对浮动的理解是它是7位精度,那么这个数字怎么可以接受?正如我所料,Mono将其修剪为7位数.

如果在C#我这样做

float f = 158136.422f;
Run Code Online (Sandbox Code Playgroud)

它变为158136.4.

Jon*_*eet 10

当你编写这段代码时:

float f = 158136.422f;
Run Code Online (Sandbox Code Playgroud)

分配给的确切值f是158136.421875.

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

我用的时候:

float f = 158136.422f;
Console.WriteLine(f);
Console.WriteLine(f.ToString("r"));
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:

158136.4
158136.422
Run Code Online (Sandbox Code Playgroud)

在Mono和.NET上.