format method

  1. @override
String format(
  1. num value
)
override

Formats value into a display string.

Implementation

@override
String format(num value) {
  final cents = _toCents(value);
  if (cents < 0) return '负${format(-cents / 100)}';

  final yuan = cents ~/ 100;
  final jiao = cents ~/ 10 % 10;
  final fen = cents % 10;
  final buffer = StringBuffer(prefix);

  if (yuan > 0 || (jiao == 0 && fen == 0)) {
    buffer
      ..write(_financial.format(yuan))
      ..write('元');
  }

  if (jiao == 0 && fen == 0) {
    buffer.write(wholeSuffix);
    return buffer.toString();
  }

  if (yuan > 0 && jiao == 0) {
    buffer.write('零');
  }

  if (jiao > 0) {
    buffer
      ..write(ChineseFinancialCodec.digits[jiao])
      ..write('角');
  }

  if (fen > 0) {
    buffer
      ..write(ChineseFinancialCodec.digits[fen])
      ..write('分');
  } else if (writeWholeSuffixForJiao) {
    buffer.write(wholeSuffix);
  }

  return buffer.toString();
}