浮动值未正确保留到数据库

时间:2013-09-04 21:52:26

标签: mysql hibernate grails floating-point

我有一个Grails应用程序,我正在解析XML文件并使用解析后的数据创建对象并将它们保存到MySQL数据库。

我的一个班级有一个Float属性:

class Foo {
    // ...
    Float myFloat

    static constraints = {
        myFloat(scale: 9) // Trying to specify 9 digits of precision, but this doesn't seem to be making any difference
    }

    // ...
}

在解析XML时,我来到一个值为6378137的属性。我想将该值分配给myFloat

class MyService{
    // ...

    def xml = new XmlParser().parseText(myXmlFile.getText())

    def foo = new Foo(
        myFloat: xml.attribute("my_float")?.toFloat()
    ).save()

    // ...
}

此时在调试器中我可以看到myFloat的值为6378137.0。问题是在事务提交后,存储在数据库中的值是6378140

为什么myFloat没有与我分配给它的值一起存储?

1 个答案:

答案 0 :(得分:1)

你必须在GORM /休眠中设置精度和比例..

查看以下链接...

http://appfuse.547863.n4.nabble.com/appfuse-user-hibernate-and-decimal-column-precision-td548279.html