格式化.NET十进制值取决于它的创建方式

时间:2017-10-17 16:38:40

标签: c# .net formatting numbers decimal

查看以下C#代码:

decimal value1 = 1234M;
decimal value2 = 1234.00M;
Console.WriteLine(value1 == value2); // True
Console.WriteLine(value1);           // 1234
Console.WriteLine(value2);           // 1234.00

value1value2之间有什么区别导致它们的格式不同(小数位数不同)?

它们是相同的值,所以我希望它们的格式是相同的。 value2以某种方式存储我创建它的两个小数位吗?如果是,我怎么能看到并改变它?

2 个答案:

答案 0 :(得分:1)

小数内部存储为一种浮点数,因此它存储尾数和指数。在您的情况下,两个数字的存储方式不同,大致如下:

decimal value1 = 1234M;
// mantissa = 1234, exponent = 0

decimal value2 = 1234.00M;    
// mantissa = 123400, exponent = 2

输出时,看起来.NET会让你获得“整个”尾数,并根据指数定位一个小数点。

答案 1 :(得分:1)

您所采用的方式在十进制值中添加了不同的精度。

它的值相同但格式不同

此处报告了一个类似的主题:Adjusting decimal precision, .net