刚遇到一个奇怪的问题:
Math.Round(113.065, 2, MidpointRounding.ToEven) => 113.06
Math.Round(113.075, 2, MidpointRounding.ToEven) => 113.08
Math.Round(113.085, 2, MidpointRounding.ToEven) => 113.08
Run Code Online (Sandbox Code Playgroud)
但...
Math.Round(113.095, 2, MidpointRounding.ToEven) => 113.1
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我希望我的结果是113.09!那可能吗?
谢谢
Tho*_*ger 11
Math.Round(113.095, 2, MidpointRounding.ToEven) => 113.1
Run Code Online (Sandbox Code Playgroud)
那是偶数.用两位小数读取它:
113.10
10将是偶数部分.修剪后的右零只是使它看起来很奇怪("不均匀"意义上的"奇怪",不要混淆为"奇怪"意思是"怪异"),但这就是为什么它表现出来的原因.
此外,您的问题中的示例也不准确.以下是这些输出的结果,这将进一步强化x.1您输出的原因:
Math.Round(113.065, 2, MidpointRounding.ToEven) => 113.06
Math.Round(113.075, 2, MidpointRounding.ToEven) => 113.08
Math.Round(113.085, 2, MidpointRounding.ToEven) => 113.08
Run Code Online (Sandbox Code Playgroud)
请注意,舍入113.075 ToEven导致113.0 8,而不是113.0 7.
完整示例:
Math.Round(113.065, 2, MidpointRounding.ToEven) => 113.06
Math.Round(113.075, 2, MidpointRounding.ToEven) => 113.08
Math.Round(113.085, 2, MidpointRounding.ToEven) => 113.08
Math.Round(113.095, 2, MidpointRounding.ToEven) => 113.1
Run Code Online (Sandbox Code Playgroud)
这也可以解读为:
Math.Round(113.065, 2, MidpointRounding.ToEven) => 113.06
Math.Round(113.075, 2, MidpointRounding.ToEven) => 113.08
Math.Round(113.085, 2, MidpointRounding.ToEven) => 113.08
Math.Round(113.095, 2, MidpointRounding.ToEven) => 113.10
Run Code Online (Sandbox Code Playgroud)
如果在你的问题的输出确实是你希望得到什么...(即如果这真的是你想要的输出,你只是想知道什么,你必须做的就是那个输出)
Math.Floor(113.065 * 100) / 100 => 113.06
Math.Floor(113.075 * 100) / 100 => 113.07
Math.Floor(113.085 * 100) / 100 => 113.08
Math.Floor(113.095 * 100) / 100 => 113.09
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |