我有一个带有float字段的域类:
class DvQuantity {
float magnitude
String units
}
当我有这个:
new DvQuantity( magnitude: '11.0', units: 'm' ).save()
在数据库中,我看到:幅度= 110.0而不是11.0
这是Grails的错误吗?有没有解决方法?
答案 0 :(得分:0)
这不是一个错误。如评论中所述,数字的解析取决于您的语言环境。见下面的例子:
import java.text.NumberFormat
String a = '11,0'
assert NumberFormat.getInstance(Locale.US).parse(a).floatValue() == 110
assert NumberFormat.getInstance(Locale.FRANCE).parse(a).floatValue() == 11.0
有许多不同的方法可以更改默认数字格式 - 例如PropertyEditorRegistrar
或ValueConverter
。您还可以使用验证器在视图上强制执行格式。
此处Grails databinding with decimal delimiter回答了示例代码,如何为Grails< 2.3和> = 2.4
执行此操作