Groovy: конвертация строки в плавающее число - PullRequest
0 голосов
/ 11 января 2019

Используемый ниже код для сохранения значения для числа с плавающей запятой

domainInstance.standardScore = params["standardScore"] as float

В этом случае мой ввод был задан как 17.9 , а при сохранении базы данных db2 - 17.899999618530273 , но я хочу сохранить как 17.9 сам, дайте мне знать, как это сделать

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Вам нужно использовать BigDecimal, чтобы сделать преобразование из String, затем BigDecimal(value).floatValue(), чтобы получить float. Вы можете сделать это более чем одним способом, примеры

1 - Использование setScale в BigDecimal

   def temp = new BigDecimal(params["standardScore"]).setScale(1, BigDecimal.ROUND_HALF_UP)

2- Использование DecimalFormat

    DecimalFormat df = new DecimalFormat("#.0");
    def temp =  new BigDecimal(df.format(params["standardScore"] ))

Тогда вам нужно получить значение с плавающей запятой

domainInstance.standardScore = temp.floatValue()
0 голосов
/ 11 января 2019

Вы не можете установить точность равную Float или Double в Java. Вам нужно использовать BigDecimal.

domainInstance.standardScore = new BigDecimal(params["standardScore"]).setScale(1, BigDecimal.ROUND_HALF_UP);

Метод BigDecimal.setScale(1, ...) ограничивает десятичное число только одним местом. Второй параметр - стратегия округления.

...