ruby-on-rails Flotante vs decimal en ActiveRecord


1 Answers

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

La lección aprendida es "¡siempre use bases de datos homogéneas de desarrollo y despliegue!"

ruby-on-rails types floating-point decimal rails-activerecord

A veces, los tipos de datos de 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 para estar seguro:

He visto muchos hilos en los que la gente recomienda no usar nunca flotante y siempre usar decimales. También he visto sugerencias de algunas personas para usar el flotador solo para aplicaciones científicas.

Aquí hay algunos ejemplos de casos:

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

He usado :decimal en el pasado, pero encontré que tratar con objetos BigDecimal en Ruby era innecesariamente incómodo en comparación con un flotador. También sé que puedo usar :integer para representar dinero / centavos, por ejemplo, pero no es adecuado para otros casos, por ejemplo, cuando cantidades en las que la precisión podría cambiar con el tiempo.

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


Related