我潜水2位十进制数,想要高达5精度的值。下面是我的代码。
decimal postiveTotal = 3,totalLenght = 6;
decimal postiveFractionResult = postiveTotal / totalLenght;
我期待0.50000,但我得到0.5
答案 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链接。