[ruby-on-rails] Flotante vs Decimal en ActiveRecord



Answers

En Rails 3.2.18,: decimal se convierte en: entero cuando se usa SQLServer, pero funciona bien en SQLite. Cambiar a: flotador resolvió este problema para nosotros.

La lección aprendida es "¡utilice siempre bases de datos de desarrollo e implementación homogéneas!"

Question

A veces, los tipos de datos Activerecord me confunden. Err, a menudo. Una de mis preguntas eternas es, para un caso dado,

¿Debo usar :decimal o :float ?

A menudo he encontrado este enlace, ActiveRecord:: decimal vs: float? , pero las respuestas no son lo suficientemente claras como para estar seguro:

He visto muchos hilos en los que la gente lo recomienda para que nunca use flotadores y siempre use decimales. También he visto sugerencias de algunas personas de usar float solo para aplicaciones científicas.

Aquí hay algunos ejemplos de casos:

  • Geolocalización / latitud / longitud: -45.756688 , 120.5777777 , ...
  • Ratio / porcentaje: 0.9 , 1.25 , 1.333 , 1.4143 , ...

He usado :decimal en el pasado, pero encontré que lidiar con objetos BigDecimal en Ruby era innecesariamente incómodo en comparación con un flotante. También sé que puedo usar :integer para representar dinero / centavos, por ejemplo, pero no encaja para otros casos, por ejemplo, cuando hay cantidades en las que la precisión puede cambiar con el tiempo.

  • ¿Cuáles son las ventajas / desventajas de usar cada uno?
  • ¿Cuáles serían algunas buenas reglas generales para saber qué tipo usar?



Related