Я подобное делал но для продажи компонентов к дверям (наличники, коробки).
В первом варианты было: при покупке двери пользователь мог подключить к покупке наличник количеством 3шт (по факту 2.5 но заказчик сказал "никто пилить его не будет), а уже при покупке 2х дверей, наличников автоматом ложиться 3шт.
То есть происходит округление количества "связанного" товара в зависимости от количества основного.
В итоге, родился вариант 2
Вариант 2:
Был немного перепилен механизм количества товаров, добавлена возможность указывать количество дробью. (В принципе что Вам и нужно)
А связанные товары переделались под "опции", то есть, что-бы к определенному товару можно было покупать только "Нужные" связи.
В Вашем случае, я бы сделал так -
Указываем в админке цену за м2, а в минимальное количество указываем обьем(?) коробки, (2.4м2) из вашего примера.
На странице товара, пользователь вводит нужное количество "метров", и согласно Вашей формуле, в поле "Количество" подставляется нужное количество "Коробок" (в м2).
Тогда со стороны класса не нужно вносить изменений, и корзину перепиливать так же не нужно. Единственная доработка, это дроби в количестве, (посмотрите в дополнениях, я видел что недавно мелькал нужный модуль)
А расписать формулу в JS дело не мудреное.