pamiętaj, że float jest wadliwym typem danych, jeśli chodzi o precyzję. Jeśli reprezentujesz 12 jako float otrzymasz 11.99999999999998 czy coś.
'38.03' można przekonwertować na dziesiętny lub inny typ danych, który jest bardziej precyzyjny (w zależności od RDBMS, jestem tutaj ogólny) i będzie się różnić od wartości zmiennoprzecinkowej.
float to 32 bity, niska precyzja. Double działa o wiele lepiej, będąc 64-bitowym typem danych. Typ danych dziesiętnych w niektórych systemach to 128-bitowe typy danych numerycznych do przechowywania bardzo precyzyjnych wartości liczbowych i są zwykle używane do denominacji pieniędzy.
I pomiń zwyczaj porównywania za pomocą = operator float wartości. Liczby zmiennoprzecinkowe są używane do przybliżonych i szybkich obliczeń, a tylko porównanie z zakresem jest dopuszczalne do sprawdzenia wartości float . Dotyczy to w zasadzie każdego pojedynczego systemu.