为什么C#System.Decimal会记住尾随零?

Rob*_*vey 18 c# precision decimal

有没有理由C#System.Decimal记得它输入的尾随零的数量?请参阅以下示例:

public void DoSomething()
{
    decimal dec1 = 0.5M;
    decimal dec2 = 0.50M;
    Console.WriteLine(dec1);            //Output: 0.5
    Console.WriteLine(dec2);            //Output: 0.50
    Console.WriteLine(dec1 == dec2);    //Output: True
}
Run Code Online (Sandbox Code Playgroud)

小数被归类为相等,但是dec2会记住它是以额外的零输入的.这是什么原因/目的?

Jon*_*eet 14

表示包括其准确性的数字可能很有用 - 因此0.5m可用于表示"0.45m到0.55m之间的任何东西"(有适当的限制),0.50m可用于表示"0.495m到0.545m之间的任何东西" ".

我怀疑大多数开发人员实际上并没有使用这个功能,但我可以看到它有时会如何有用.

我相信这个能力首先来自.NET 1.1,顺便说一下 - 我认为1.0中的小数总是有效地归一化.

  • 由于解释的原因,0.5和0.50*确实有*不同的信息.精度在某些领域非常重要,即数学和化学. (2认同)