5
Estoy intentando mantener un BigDecimal en una nueva aplicación de grails 2.0, y no se comporta del todo como estoy esperando.Problema de Grails 2.0 con BigDecimal persistente
que hacer una nueva aplicación llamada l2bigdec
y añadir esta clase de dominio:
package l2bigdec
class PlayMe {
BigDecimal imStupidOrSomething
static constraints = {
}
}
Luego puse este código en el archivo de arranque:
import l2bigdec.*
class BootStrap {
def init = { servletContext ->
def thisThingIHate = new PlayMe(imStupidOrSomething:0.912345).save(failOnError:true)
println thisThingIHate.imStupidOrSomething
PlayMe.withSession{it.clear()}
def getItBack = PlayMe.find{it}
println getItBack.imStupidOrSomething
}
def destroy = {
}
}
que imprime:
0.912345
0.91
¿Por qué no imprime 0.912345 en ambas ocasiones? ¿No entiendo BigDecimal?
¿Qué pasa si yo en realidad quiero un BigDecimal y no un flotador redondeada y tiene que conservar todos los dígitos se lo doy? ¿Esto ya no es posible en 2.0? – Mikey
¿Puedo establecer una escala predeterminada más grande para que no tenga que cazar en mi proyecto actualizando cada BigDecimal? – Mikey
Si se dirige a un RDBMS en particular, algunos tienen tipos de precisión arbitraria que puede usar ('NUMERIC' en PostgreSQL, por ejemplo). De lo contrario, no es una manera fácil de conocer para conservar dígitos arbitrarios. Tampoco soy consciente de un solo lugar para establecer la escala predeterminada. Si sus nombres de propiedad BigDecimal son similares en todas las clases, puede usar 'grails.gorm.default.constraints', que se describe aquí: http://grails.org/doc/latest/ref/Constraints/Usage.html –