/** * Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.web.server.conversion; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormatSymbols; /** * Formats double values to a fixed number of decimal places. */ public class DoubleValueDecimalPlaceFormatter extends DoubleValueFormatter { // CSOFF public static final DoubleValueDecimalPlaceFormatter NON_CCY_2DP = DoubleValueDecimalPlaceFormatter.of(2, false); public static final DoubleValueDecimalPlaceFormatter NON_CCY_4DP = DoubleValueDecimalPlaceFormatter.of(4, false); public static final DoubleValueDecimalPlaceFormatter NON_CCY_6DP = DoubleValueDecimalPlaceFormatter.of(6, false); public static final DoubleValueDecimalPlaceFormatter CCY_2DP = DoubleValueDecimalPlaceFormatter.of(2, true); public static final DoubleValueDecimalPlaceFormatter CCY_4DP = DoubleValueDecimalPlaceFormatter.of(4, true); public static final DoubleValueDecimalPlaceFormatter CCY_6DP = DoubleValueDecimalPlaceFormatter.of(6, true); // CSON private final int _decimalPlaces; public DoubleValueDecimalPlaceFormatter(int decimalPlaces, boolean isCurrencyAmount) { this(decimalPlaces, isCurrencyAmount, DecimalFormatSymbols.getInstance()); } public DoubleValueDecimalPlaceFormatter(int decimalPlaces, boolean isCurrencyAmount, DecimalFormatSymbols formatSymbols) { super(isCurrencyAmount, formatSymbols); _decimalPlaces = decimalPlaces; } public static DoubleValueDecimalPlaceFormatter of(int decimalPlaces, boolean isCurrencyAmount) { return new DoubleValueDecimalPlaceFormatter(decimalPlaces, isCurrencyAmount); } @Override public BigDecimal process(BigDecimal value) { return value.setScale(_decimalPlaces, RoundingMode.HALF_UP); } }