【发布时间】:2017-10-17 16:38:40
【问题描述】:
看看下面的 C# 代码:
decimal value1 = 1234M;
decimal value2 = 1234.00M;
Console.WriteLine(value1 == value2); // True
Console.WriteLine(value1); // 1234
Console.WriteLine(value2); // 1234.00
value1 和 value2 之间有什么区别导致它们的格式不同(不同的小数位数)?
它们是相等的值,所以我希望它们的格式相同。 value2 是否以某种方式存储了我创建的带有两位小数的位置?如果是,我怎样才能看到并改变它?
【问题讨论】:
-
十进制有点特殊,它能够跟踪值中的有效位数。非常不同于浮点数和双精度数。因此,如果您没有指定分数中所需的位数,那么它将显示尽可能多的数字。
-
“我希望它们的格式相同” 您希望采用哪种方式?您希望它为第一个值添加有效数字还是从第二个值中删除它们?
-
@DStanley 如果两个值相等,我希望它们的行为相同。我真的不在乎它们是如何格式化的,只要它们是一致的。这只是出乎意料;感觉就像我无法知道十进制值将如何格式化,直到我真正做到这一点。如果由我决定,我会让默认格式的工作方式与浮点类型相同 - 删除所有不重要的零。
标签: c# .net formatting numbers decimal