Тебе исчерпывающе ответили о причинах, такова природа десятичных чисел, которые хранятся в битах.
Если тебе нужно работать с числами в той форме что сохранена - либо используй строки.
'capacity' => "0.2",
либо используй целочисленный формат с фиксированной степенью (где то ты должен определить предел точности, сколько знаков после запятой, которые тебя интересуют, и делай на это соответствующую скидку при операциях умножения и деления).
'capacity' => 2000,
В данном случае речь о 4 значимых цифрах или 10^4
при умножении, результат нужно делить на 10^4 и отбрасывать все что после запятой через intVal или round (а перед делением наоборот первый операнд умножать)
Внимание, на php int, при превышении PHP_INT_MAX будет автоматически сконвертировано в float, поэтому даже с этим методом придется хранить числа в строках и использовать
bc math или рекомендуют
gmp как самую быструю реализацию