我知道这个问题已经被一次又一次地讨论过了,但是我似乎甚至没有得到一个单步分裂的最简单的例子,它会导致预期的,没有根据的结果在C#中 - 所以我想知道如果也许有一些编译器标志或其他奇怪的东西我没有想到。考虑下面这个例子:C#双精度分割时丢失精度
double v1 = 0.7;
double v2 = 0.025;
double result = v1/v2;
当我最后一个行后断裂,在VS调试器检查它,“结果”的值是27.999999999999996。我知道我可以通过更改为“decimal”来解决它,但对于周围的程序来说这是不可能的。像这样的两个低精度双打不能分为28的正确值,这不奇怪吗? Math.Round的唯一解决方案是真的吗?
查看“相关”侧边栏中的任何项目,如下所示:http://stackoverflow.com/q/4252917/121309 –
http://docs.oracle.com/cd/E19957-01/806 -3568/ncg_goldberg.html必须阅读 – Habib