【发布时间】:2012-05-13 17:36:33
【问题描述】:
我知道这已经被讨论过一次又一次,但我似乎无法得到一个最简单的例子,即一步除法的双打结果在 C# 中产生预期的、不四舍五入的结果——所以我想知道是否可能有一些编译器标志或其他我没有想到的奇怪的东西。考虑这个例子:
double v1 = 0.7;
double v2 = 0.025;
double result = v1 / v2;
当我在最后一行之后中断并在 VS 调试器中检查它时,“结果”的值为 27.999999999999996。我知道我可以通过更改为“十进制”来解决它,但在周围程序的情况下这是不可能的。像这样的两个低精度双精度数不能除到正确的值 28 是不是很奇怪? Math.Round 结果真的是唯一的解决方案吗?
【问题讨论】:
-
查看“相关”侧边栏中的任何项目,例如:stackoverflow.com/q/4252917/121309