Проблема в том, что вы преобразовываете десятичное число (число с плавающей запятой / двойное число) в целое число, поэтому значение просто усекается (десятичные значения обрезаются).
Если вы действительно не хотите использовать значения с плавающей запятой (десятичные значения) в базе данных, вы можете использовать этот метод обхода:
Умножьте число на 100, прежде чем вставлять его, а затем обязательно делите его на 100 при использовании данных. Это позволит вам сохранить 2 десятичных знака при использовании целочисленной памяти.
Таким образом, 2,4 будет храниться как 240, 53 будет 5300, 20,74 станет 2074 и т. Д ...
Хочу отметить, что это не идеальное решение, а скорее взлом.
Я настоятельно рекомендую то, что другие пользователи предложили в комментариях: сохранять десятичное значение (как у вас есть) и форматировать его при представлении.
--- Дополнительно ---
Ваша настоящая проблема, похоже, связана с настройкой базы данных.
Каждое из этих значений должно иметь свое собственное поле, поскольку они будут повторяться для каждого продукта.