Десятичный формат отчета Jasper с нулевым значением дает ноль

1

Мы используем отчет о яшме.

И для одного из полей в отчете мы установили формулу, например, если значение поля rate1 равно null, тогда отобразите "-" в отчете иначе значение rate1 такое как ## 0.0000.

$ F {rate1}? New DecimalFormat ("## 0.0000"). Format (новый BigDecimal ("" +$F {rate1})): "-"

Но если значение rate1 равно 0, то также отображается "-" вместо 0.0000. Что может быть проблемой?

Теги:
jasper-reports

1 ответ

0

Вам нужно изменить его на следующий.

$F{rate1} != null ? new DecimalFormat("##0.0000").format(new BigDecimal(""+$F{rate1})):"-"

Чтобы объяснить, я не проверял в JasperReports и не имею настройки для тестирования сразу. Но в C нуль считается ложным, а ненулевое значение считается истинным.

Где-то, когда отчеты анализируются и выполняются, это может происходить, это может быть сценарий. Вы лучше согласитесь с сообществом об этом.

  • 0
    В Java нет автоматического преобразования из int (или String) в логическое значение, поэтому синтаксис простого Java, подобный представленному в вопросе, является недопустимым. Однако, поскольку это, очевидно, как-то сработало, я также склонен верить, что это изменение сделает его лучше.
  • 0
    Я согласен. Но, может быть, Джаспер может что-то делать внутренне, прежде чем непосредственно оценивать выражение, поэтому я попросил его проверить с сообществом. Потому что мой последний опыт был с 4.5.1, а они 5.6.0, так что все могло измениться. И в любом случае выражение в данном формате неверно. :)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню