Czasami mylą mnie typy danych Activerecord. Err, często. Jednym z moich wiecznych pytań jest, w danym przypadku,
Czy powinienem użyć
:decimal
lub:float
?
Często natrafiam na ten link, ActiveRecord:: dziesiętny vs: zmiennoprzecinkowy? , ale odpowiedzi nie są wystarczająco jasne, aby mieć pewność:
Widziałem wiele wątków, w których ludzie zalecają płaskie, aby nigdy nie używali liczb zmiennoprzecinkowych i zawsze używali liczb dziesiętnych. Widziałem także sugestie niektórych osób, aby używać pływaka tylko do zastosowań naukowych.
Oto kilka przykładowych przypadków:
- Geolokalizacja / szerokość / długość geograficzna:
-45.756688
,120.5777777
... - Stosunek / odsetek:
0.9
,1.25
,1.333
,1.4143
, ...
Używałem :decimal
w przeszłości, ale okazało się, że radzenie sobie z BigDecimal
obiektami w Ruby było niepotrzebnie niewygodne w porównaniu do float. Wiem też, że mogę :integer
na przykład przedstawiać pieniądze / centy, ale to nie pasuje do innych przypadków, na przykład gdy ilości, w których precyzja może się zmieniać w czasie.
- Jakie są zalety / wady korzystania z nich?
- Jakie byłyby pewne dobre zasady, aby wiedzieć, jakiego rodzaju użyć?