这只是一个提升自己知识的问题,因为我发现了一些不符合预期的事情。请考虑以下代码
decimal d0 = 0;
decimal d1 = 0M;
decimal d2 = 0.0M;
string s0 = d0.ToString();
string s1 = d1.ToString();
string s2 = d2.ToString();
调试器会在观察窗口中显示d0
和d1
为0
。但它会将d2
显示为0.0
。字符串s0
和s1
将包含"0"
。但s2
将包含"0.0"
。
这是为什么?当然0 == 0.00
。实际上(d1 == d2)
会返回true
。那么为什么C#内部对待这些不同呢?