5
Staram się utrzymywać BigDecimal w zupełnie nowej aplikacji grails 2.0 i nie zachowuję się tak, jak się spodziewam.Problemy z Grails 2.0 z uporczywym BigDecimalem
robię nowa aplikacja o nazwie l2bigdec
i dodać do tej klasy domeny:
package l2bigdec
class PlayMe {
BigDecimal imStupidOrSomething
static constraints = {
}
}
Następnie umieścić ten kod w bootstrap:
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 = {
}
}
która drukuje:
0.912345
0.91
Dlaczego nie drukuje się za każdym razem 0.912345? Czy nie rozumiem BigDecimal?
co jeśli faktycznie chcą BigDecimal a nie zaokrąglone pływak i musi zachować każdą cyfrę daję? Czy nie jest to już możliwe w wersji 2.0? – Mikey
Czy mogę ustawić większą domyślną skalę, aby nie musieć przeglądać mojego projektu aktualizując każdy BigDecimal? – Mikey
Jeśli kierujesz się konkretnym RDBMS, niektóre z nich mają dowolne typy precyzji, których możesz użyć (na przykład 'NUMERIC' w PostgreSQL). W przeciwnym razie nie ma łatwego sposobu na zachowanie dowolnych cyfr. Nie jestem również świadomy pojedynczego punktu, aby ustawić domyślną skalę. Jeśli twoje nazwy właściwości BigDecimal są podobne na różnych klasach, możesz użyć 'grails.gorm.default.constraints', opisanego tutaj: http://grails.org/doc/latest/ref/Constraints/Usage.html –