2012-02-25 2 views
5

새로운 grails 2.0 앱에서 BigDecimal을 유지하려고하는데 기대했던대로 동작하지 않습니다.Grails 2.0에서 BigDecimal을 지속하는 데 문제가 있습니다.

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 = { 
    } 
} 

인쇄 :

0.912345 
0.91 

을 내가 부트 스트랩이 코드를 넣어 다음

package l2bigdec 

class PlayMe { 
    BigDecimal imStupidOrSomething 
    static constraints = { 
    } 
} 

:

나는 새로운 응용 프로그램은 l2bigdec라고하고이 도메인 클래스를 추가 할 두 번 모두 0.912345를 인쇄하지 않는 이유는 무엇입니까? BigDecimal을 이해하지 못합니까?

답변

10

규모의 제약은 당신이 제어 할 수 있습니다 :

... 
BigDecimal myNum 

static constraints = { 
    myNum(scale: 6) 
} 
... 

http://grails.org/doc/latest/ref/Constraints/scale.html

+0

내가 뭘 실제로 둥근 플로트를 BigDecimal와하지를 원하고 그것이 내가 그것을 줄 때마다 자리를 보존 할 필요가있는 경우? 이것은 2.0에서 더 이상 가능하지 않습니까? – Mikey

+0

모든 BigDecimal을 업데이트하면서 프로젝트를 검색 할 필요가 없도록 더 큰 기본 눈금을 설정할 수 있습니까? – Mikey

+0

특정 RDBMS를 대상으로하는 경우 일부는 임의 정밀도 유형을 사용할 수 있습니다 (예 : PostgreSQL의 경우 NUMERIC). 그렇지 않으면 임의의 숫자를 보존하는 것이 쉽지 않습니다. 또한 기본 배율을 설정하는 단일 지점을 인식하지 못합니다. BigDecimal 프로퍼티 이름들이 클래스들 사이에서 유사하다면, 다음에서 설명하는'grails.gorm.default.constraints'를 사용할 수 있습니다 : http://grails.org/doc/latest/ref/Constraints/Usage.html –

관련 문제