code: @SuppressWarnings("unchecked")
      protected Optional<NumberFormatWrapper<N>> createFormatter(final FieldAccessor field, final Configuration config) {
          
          final Optional<CsvNumberFormat> formatAnno = field.getAnnotation(CsvNumberFormat.class);
          
          if(!formatAnno.isPresent()) {
              return Optional.empty();
          }
          
          final String pattern = formatAnno.get().pattern();
          if(pattern.isEmpty()) {
              return Optional.empty();
          }
          
          final boolean lenient = formatAnno.get().lenient();
          final Locale locale = Utils.getLocale(formatAnno.get().locale());
          final Optional<Currency> currency = formatAnno.get().currency().isEmpty() ? Optional.empty()
                  : Optional.of(Currency.getInstance(formatAnno.get().currency()));
          final RoundingMode roundingMode = formatAnno.get().rounding();
          final DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(locale);
          
          final DecimalFormat formatter = new DecimalFormat(pattern, symbols);
          formatter.setParseBigDecimal(true);
          formatter.setRoundingMode(roundingMode);
          currency.ifPresent(c -> formatter.setCurrency(c));
          
          final NumberFormatWrapper<N> wrapper = new NumberFormatWrapper<>(formatter, (Class<N>)field.getType(), lenient);
          wrapper.setValidationMessage(formatAnno.get().message());
          
          return Optional.of(wrapper);
          
      }
docs: 数値のフォーマッタを作成する。
  <p>アノテーション{@link CsvNumberFormat}の値を元に作成します。</p>
  @param field フィールド情報
  @param config システム設定
  @return アノテーション{@link CsvNumberFormat}が付与されていない場合は、空を返す。