He heredado una aplicación de Ruby on Rails que usa la gema de administración para un panel de administración.
Este proyecto incluye un modelo de producto, y cada producto tiene un precio de caja al por mayor. Este campo se llama wholesale_case_price_cents y es un número entero. Todos los precios en la aplicación se manejan como números enteros.
El problema que encuentro es que algunos números, cuando se ingresan en el campo de entrada del panel de administración, se convierten en un decimal. Por ejemplo, si ingreso el número entero 3780, el valor de entrada cambia automáticamente a 3779.9999999999995. Ver captura de pantalla:
Como puede ver, el valor de entrada se cambia automáticamente antes del envío. No hace esto para cada número, solo para algunos: 
La aplicación también utiliza la gema de administración de dinero de campo, la gema de rieles de dinero y la gema de monetización. Sospecho que es la gema de administrar-campo-dinero la que causa el problema, pero no sé cómo solucionarlo, salvo eliminar la gema. ¿Alguien más se encuentra con este problema?
Parece un problema en el problema de JavaScript de administrate-field-money en esta línea
return $el.maskMoney('unmasked')[0] * 100;Y cuando el valor es 37.80:
37,80 × 100 = 3779,9999999999995
Así es como funcionan los flotadores en muchos idiomas
Hay otra sucursal . Y ahí
Math.round($el.maskMoney('unmasked')[0] * 100)Esto devolverá 3780
Probablemente necesite actualizar esta versión de gema, o especificar una rama en github en su Gemfile o de alguna manera parchear este archivo JS
Como se mencionó en otras respuestas, esto se debe a las matemáticas de punto flotante en el JS proporcionado por su biblioteca.
Una forma sencilla de resolverlo es desinfectar los parámetros enviados en Ruby. Usted sabe que las matemáticas de coma flotante producirán flotantes que están muy cerca del número entero que deben representar. Por lo tanto, en sus controladores podría hacer esto:
price = params[:product][:wholesale_case_price_cents].round()