我正在舍入一个特定的双重值,并期待一定的结果,但它没有通过.这让我很好奇,如果存在缺陷,或者我在底层逻辑中遗漏了什么.
请参阅以下代码段:
double value = 0.01075;
Console.WriteLine(Math.Round(value, 4, MidpointRounding.AwayFromZero));
Run Code Online (Sandbox Code Playgroud)
产生
0.0107
Run Code Online (Sandbox Code Playgroud)
使用AwayFromZero让我觉得应该做0.0108.我已经尝试了几个不同的例子(如下所示)并在每个实例中得到预期的结果,除了我上面列出的那个.救命??!
double value = 0.010075;
Console.WriteLine(Math.Round(value, 5, MidpointRounding.AwayFromZero));
// 0.01008
value = 0.01075;
Console.WriteLine(Math.Round(value, 4, MidpointRounding.AwayFromZero));
// 0.0107
value = 0.010750000001;
Console.WriteLine(Math.Round(value, 4, MidpointRounding.AwayFromZero));
// 0.0108
value = 0.01065;
Console.WriteLine(Math.Round(value, 4, MidpointRounding.AwayFromZero));
// 0.0107
value = 0.01055;
Console.WriteLine(Math.Round(value, 4, MidpointRounding.AwayFromZero));
// 0.0106
value = 0.0175;
Console.WriteLine(Math.Round(value, 3, MidpointRounding.AwayFromZero));
// 0.018
value = 0.175;
Console.WriteLine(Math.Round(value, 2, MidpointRounding.AwayFromZero));
// 0.18
value = 0.75;
Console.WriteLine(Math.Round(value, 1, MidpointRounding.AwayFromZero));
// 0.8
Run Code Online (Sandbox Code Playgroud)
注意:使用Visual Studio Pro 2015和.Net 4.5.2
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |