【问题标题】:Grails gorm rounding float when saving保存时Grails gorm舍入浮动
【发布时间】:2020-07-04 13:26:09
【问题描述】:

我有一个带有名为 hfMonto 的 Float 字段的 Domain 类,并且在使用控制器中更新它时使用

hfObject.properties=params

作为参数:

查看表格时,hfMonto值向上取整:

而且版本字段每次都在增加。将休眠日志记录设置为跟踪不会显示任何错误或警告。

我在 Java 1.8.0_252-8u252-b09-1ubuntu1-b09 之上运行 Grails 3.3.11

有什么提示吗?谢谢

更新:它只发生在大于 1,000,000 的数字上

【问题讨论】:

  • 它真的是圆的吗 - 如果你使用 1 例如它会做什么?
  • 在这种情况下,它会四舍五入到零(并且版本也会增加)
  • 数据库中这是什么数据类型?
  • float,db为10.4.12-MariaDB-1:10.4.12+maria~bionic
  • 您能创建最小可重现示例吗? stackoverflow.com/help/minimal-reproducible-example

标签: hibernate grails grails-orm


【解决方案1】:

我终于通过将数据库字段更改为 double 并将 Domain 属性更改为 BigDecimal 来实现它。

【讨论】:

    【解决方案2】:

    我的建议是检查数据库字段;有时数据库字段(在实际数据库中)与休眠字段不匹配

    确保您从前端返回的内容是您所期望的;有时前端会返回一个“字符串”,它会截断浮点数。

    【讨论】:

    • 数据库中的字段匹配 - 它是浮动的。关于前面的内容,在调试器截图中你可以看到发送到休眠层的参数是正确的(hfMonto->1967029)。
    • 啊...没有注意变量的大小。您应该使用 DOUBLE。
    猜你喜欢
    • 1970-01-01
    • 2016-09-11
    • 2011-06-24
    • 1970-01-01
    • 2016-11-27
    • 2011-12-08
    • 2014-10-27
    • 2018-11-16
    • 2015-05-13
    相关资源
    最近更新 更多