对于十进制数据类型,在C#中获得精度为5

时间:2018-04-25 05:07:23

标签: c#

我潜水2位十进制数,想要高达5精度的值。下面是我的代码。

decimal postiveTotal = 3,totalLenght = 6;
decimal postiveFractionResult = postiveTotal / totalLenght;

我期待0.50000,但我得到0.5

1 个答案:

答案 0 :(得分:3)

C#数字显示类型如十进制将始终去除附加的0 - 0.5和0.50之间没有区别。

如果要使输出格式正确,则需要使用字符串格式标识符:

自定义数字格式标识符:

Console.WriteLine($"{postiveFractionResult:0.00000}");

标准号码格式标识符:

Console.WriteLine($"{postiveFractionResult:F5}");

分配给变量:

   // using string interpolation
   string result = $"{postiveFractionResult:0.00000}";
   // using string.format explicite
   string result = string.Format("{0:0.00000}", postiveFractionResult);

您可以找到有关字符串格式here的更多信息。

修改

如Daisy Shipton所述,将变量声明为0.5M或0.50M时会有所不同。使用不同声明进行的一点测试表明,通过计算也可以保留额外定义的0:

var result  = 1.25m * 0.5m;         // 6.25M
var result1 = 1.250m * 0.5m;        // 0.6250M
var result2 = 1.250m * 0.50000m;    // 0.62500000M
var result3 = 1.25000m * 0.5m;      // 0.625000M
var result4 = 1.25000m * 0.50000m;  // 0.6250000000M

另请参阅以下so post,其中包含有关此行​​为的说明。可悲的是,由于网站目前处于离线状态,链接已被破坏,我找不到正确的ECMA链接。