处理浮点计算中的精度限制
浮点数广泛用于计算,但它们具有固有的精度限制。其中一个问题是无法精确表示所有实数,从而导致计算期间出现舍入错误。
浮点表示问题
考虑以下尝试的代码根据某些值计算列数:
double mw = 4.5999999999999996; // Represented as 4.6 internally double p = 0.2; double g = 0.2; int h = 1; int columns = (int) ((mw - (h * 11 * p)) / ((h * 11 * p) + g)) + 1;
尽管想要的结果为2、程序错误输出1。这是因为4.6(4.59999999999999996)的内部浮点表示导致计算中出现舍入错误。
解决精度问题
克服这个精度问题需要承认浮点的局限性算术:
以上是为什么浮点计算会产生意外的结果?的详细内容。更多信息请关注PHP中文网其他相关文章!