我遇到了decimal.ToString的非常奇怪的行为:
第一种情况:
c# - 十进制.ToString的不同行为-LMLPHP

您可以看到变量ValueFloat = 9ValueFloat.Value.ToString("G") = "9"

第二种情况:

c# - 十进制.ToString的不同行为-LMLPHP

您可以看到变量ValueFloat = 9ValueFloat.Value.ToString("G") = "9.000000000000000".

现在,怎么可能?在这两种情况下,变量ValueFloat具有相同的值。

我假设它可能与文化有关,但是在两种情况下,代码都在本地机器上运行,而本地机器显然具有相同的文化。

最佳答案

如果该值是包含点后有效数字的算术运算的结果,则可能发生这种情况。这是一个例子:

decimal a = 9;
decimal b = 1.23456789M;
decimal c = 10.23456789M;
decimal d = c-b; // The result is 9
Console.WriteLine("Values are the same: {0}", a == d);
Console.WriteLine(a.ToString("G"));
Console.WriteLine(d.ToString("G"));


运行上面的produces输出如下:

Values are the same: True
9
9.00000000

关于c# - 十进制.ToString的不同行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38998103/

10-09 18:32