diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/RealNumberRenderer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/RealNumberRenderer.java index 5b4ef0763262a24c3ac320807c62715b0969a9d0..2a286d846953a3d59282f9103146f798c60dc0f8 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/RealNumberRenderer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/renderer/RealNumberRenderer.java @@ -17,6 +17,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RealNumberFormatingPara */ public final class RealNumberRenderer implements GridCellRenderer<BaseEntityModel<?>> { + private static final String EXPONENT_FORMAT = "E000"; private static final String ZEROS = "00000000000000000000"; private static final int MAX_PRECISION = ZEROS.length(); @@ -29,14 +30,19 @@ public final class RealNumberRenderer implements GridCellRenderer<BaseEntityMode } int precision = Math.max(0, Math.min(MAX_PRECISION, realNumberFormatingParameters.getPrecision())); String format = "0." + ZEROS.substring(0, precision); - if (realNumberFormatingParameters.isScientific()) + boolean scientific = realNumberFormatingParameters.isScientific(); + if (scientific) { - format += "E000"; + format += EXPONENT_FORMAT; } try { double doubleValue = Double.parseDouble(value); String formattedValue = NumberFormat.getFormat(format).format(doubleValue); + if (scientific == false && doubleValue != 0 && Double.parseDouble(formattedValue) == 0) + { + formattedValue = NumberFormat.getFormat(format + EXPONENT_FORMAT).format(doubleValue); + } return MultilineHTML.wrapUpInDivWithTooltip(formattedValue, value); } catch (NumberFormatException ex) {