Math.Round(doubleValue, 2)默认情况下使用// ToEven时
// 2.135 - > 2.13为什么不2.14?
// 3.135 - > 3.14
当在2.13使用AwayFromZero 2.135轮时为什么不是2.14?
要回答你标题中的问题:
2.135 并不总是舍入(使用2位小数)到2.13,这只是在您的情况下发生,因为您使用的是二进制浮点数据类型.(由于leppie指出,2.135不能准确地表示为double,还请注意,微软似乎之间disinguish decimal和floating point types,即使小数也符合定义)
但是,如果您将其decimal用作数据类型而不是舍入行为,则可以比较此代码段中的不同输出以验证:
decimal val1 = 2.135m;
decimal val2 = 3.135m;
Console.WriteLine("decimal val1({0}) rounded = {1}", val1, Math.Round(val1, 2));
Console.WriteLine("decimal val2({0}) rounded = {1}", val2, Math.Round(val2, 2));
double dval1 = 2.135;
double dval2 = 3.135;
Console.WriteLine("double val1({0}) rounded = {1}", dval1, Math.Round(dval1, 2));
Console.WriteLine("double val2({0}) rounded = {1}", dval2, Math.Round(dval2, 2));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |