Дело в том, что умножение на целые числа , как a * b * c
, равнозначно добавлению 1 + 1 + 1 + 1 + ... + 1
a * b * c
раз, верно?
Вы добавляете delta + delta + ...
(x / delta) * (y / delta) * (z / delta)
раз. Или, другими словами, (x * y * z) / (delta ** 3)
раз.
Теперь эта сумма delta
s такая же, как эта:
delta * (1 + 1 + 1 + 1 + ...)
^^^^^^^^^^^^^^^^^^^^ (x * y * z) / (delta**3) times
Итак, если delta
- это степень из 10, (x * y * z) / (delta**3)
будет целым числом, и оно будет равно сумме 1 в скобках (потому что это то же самое, что и product x * y * (z / (delta**3))
, где последний член является целым числом - см. самое первое предложение этого ответа). Таким образом, ваш результат будет следующим:
delta * ( (x * y * z) / (delta ** 3) ) == (x * y * z) / (delta**2)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the sum of ones
Вот так вы и рассчитали произведение , деленное на delta
квадрат .
Чтобы решить эту задачу, умножьте все тома на delta * delta
.
Тем не менее, я не думаю, что возможно использовать эту логику c для delta
с, которые не являются степенью 10. И действительно, код будет go всех видов haywire для delta == 0.21
и l_cubo == 2
, например: вы получите 9.261000000000061
вместо 8.