小学课就学过:
(a + b * c) / c = a / c + b
更简单可以化成:
b * c / c = b
之前一直知道计算机计算浮点数不精确,然而,前几天才发现,连上述式子,各种编程语言包括matlab等等都会算错
例如python:
In [1]: 28 * 40.1 / 40.1
Out[1]: 27.999999999999996
恰好当时有向上/向下取整的需求,直接导致结果差了1,调试的时候才发现问题在这里。
问题代码如下(命名略有改动):
l_length = l_count * spacing
start_index = int(math.ceil((data.start + l_length) / spacing))
end_index = int(math.ceil((data.end + l_length) / spacing))