code: @Override
    public final String print(final String pNumber, final String pDigSep,
      final String pDigGrSep, final Integer pDecPlAfDot,
        final Integer pDigitsInGroup) {
      if (pNumber == null || "".equals(pNumber)) {
        return "";
      }
      int dotIdx = pNumber.indexOf(".");
      String leftWing;
      String rightWing;
      if (dotIdx == -1) {
        leftWing = pNumber;
        rightWing = null;
      } else {
        leftWing = pNumber.substring(0, dotIdx);
        rightWing = pNumber.substring(dotIdx + 1);
      }
      StringBuffer sb = new StringBuffer();
      if (leftWing.startsWith("-")) {
        leftWing = leftWing.substring(1);
        sb.append("-");
      }
      addLeftWing(leftWing, sb, pDigGrSep, pDigitsInGroup);
      if (pDecPlAfDot > 0) {
        sb.append(pDigSep);
        for (int i = 0; i < pDecPlAfDot; i++) {
          if (rightWing != null && rightWing.length() > i) {
            sb.append(rightWing.charAt(i));
          } else {
            sb.append("0");
          }
        }
      }
      return sb.toString();
    }
docs: <p>Prints number formatted by given decimal separator, decimal group
  separator, decimal places after dot and digits in group.</p>
  @param pNumber e.g. "12146678.12"
  @param pDigSep decimal separator, e.g. ","
  @param pDigGrSep decimal group separator, e.g. " "
  @param pDecPlAfDot decimal places after dot, e.g. 2
  @param pDigitsInGroup Digits in group, e.g. 3
  @return String internationalized number, e.g. "12 146 678,12"