M suffisso significa che il numero è BigDecimal . Puoi verificarlo in REPL
user=> (class 1)
java.lang.Long
user=> (class 1.0)
java.lang.Double
user=> (class 1M)
java.math.BigDecimal
Poiché il tipo di colonna del tuo database è decimal(5,2) e decimal(7,2) , non è sicuro convertire i numeri in float o double perché quei tipi a virgola mobile non possono rappresentare tutti i numeri di decimal(5,2) o decimal(7,2) accuratamente.
Puoi Google con la parola chiave "imprecisione in virgola mobile". Ci sono tonnellate di articoli e domande e risposte, anche all'interno di Stackoverflow.