Grails String to BigDecimal

时间:2017-12-05 17:04:02

标签: grails

我无法弄清楚如何将String转换为Grails应用程序内的BigDecimal。

我在做:

person.salary = params.number

但是我收到了一个错误。

*salary is a BigDecimal and params.number is always a string.

3 个答案:

答案 0 :(得分:3)

  

我无法弄清楚如何将String转换为BigDecimal   Grails应用程序。

BigDecimal有一个String构造函数,所以你能做的就是new BigDecimal(params.number)

您还有其他选择......

你可以params.number as BigDecimal

您可以使用其中一种类型转换便捷方法,例如params.double('number') as BigDecimal,或者您可以提供类似params.double('number', 21.12) as BigDecimal)的默认值。请注意,转换为double时可能会失去精确度,因此如果这是一个问题,请不要这样做。

答案 1 :(得分:1)

你可以尝试

person.salary = params.number.toBigDecimal()

答案 2 :(得分:1)

如果您确实希望数字参数为BigDecimal,可以使用以下方法考虑绑定参数:

方法1:绑定为Controller Action的参数
您可以添加数字参数,而不是 params.number 访问:

def anyAction(double number){
  ...
  person.salary = number
  ...
}


方法2:使用域对象进行数据绑定

创建域

class SomeClass {
    BigDecimal number
}

控制器操作中的数据绑定

// will bind every parameters in params to an object dataBinding
def dataBinding = new SomeClass(params) 
person.salary = dataBinding.number // it number are BigDecimal

可能还有其他方法,但我希望它可以提供帮助