我似乎无法找到一个关于一个简单问题的答案:如何将任何数字四舍五入到最近int?
例如,每当数字为0.2,0.7,0.2222,0.4324,0.9999时,我希望结果为1.
到目前为止我有
int b = (int) Math.ceil(a / 100);
Run Code Online (Sandbox Code Playgroud)
但它似乎并没有完成这项工作.
我知道这已经一次又一次地讨论了,但是我似乎无法得到一个一步一步的双重划分的最简单的例子,导致C#的预期的,不完整的结果 - 所以我想知道是否也许有一些编译器标志或其他奇怪的我没有想到的.考虑这个例子:
double v1 = 0.7;
double v2 = 0.025;
double result = v1 / v2;
Run Code Online (Sandbox Code Playgroud)
当我在最后一行之后断开并在VS调试器中检查它时,"result"的值是27.999999999999996.我知道我可以通过更改为"十进制"来解决它,但在周围程序的情况下这是不可能的.像这样的两个低精度双打不能分成28的正确值是不奇怪的?对Math.Round来说唯一的解决方案是结果吗?