Thanks @Enrique Meza, I have seen the variants used before. The problem I have is the price is per kilogram.
So a transaction of 1.67kg is not easy to create using variants.
I have tried to create a price per 1gram but the pricing can't usually go past two decimal places.