Вы создаете BigDecimal из числа с плавающей точкой, чтобы оно точно отражало значение числа с плавающей точкой, и, как вы, вероятно, знаете, последние цифры числа с плавающей запятой более или менее случайны.
Я предполагаю, что вы видите эту базу данных, потому что драйвер jdbc думает: Эй, я получаю BigDecimal. Я могу использовать все цифры, которые могу освоить.
Когда вы используете float или double, драйвер jdbc знает, что я не могу полагаться на все цифры, и игнорирует то, что следует после этого порога.
Если вам нужна дополнительная точность большого десятичного числа, создайте ее из строки или рассчитайте из целых чисел.
=== другое исправление ====
Обработка выполняется не драйвером jdbc, а различными преобразованиями toString, поскольку вы собираете строку SQL.
Кстати: для этого вам действительно следует использовать переменные связывания.