Ne dubito fortemente. I decimali usano la matematica a virgola fissa e non esiste un tipo di dati in PHP in grado di fornirlo. I float si avvicinano, ma in realtà sono arrotondati, il che significa che l'assegnazione di 2 a un float potrebbe comportare invece 1.9999999999999999999. Quindi, anche se MySQL offre un modo per ottenere un decimale in un float PHP, stai rischiando la perdita di dati eseguendo il cast da un decimale a un float.
Per gestirlo in modo pulito, avresti bisogno di qualcosa come GMP , ma come probabilmente puoi immaginare MySQL non può fornirtelo automaticamente. Dovrai farlo manualmente in PHP.