number_format_ext 2.3.3 copy "number_format_ext: ^2.3.3" to clipboard
number_format_ext: ^2.3.3 copied to clipboard

Numberformat extnsion, Added floor and ceil methods to Numberformat.

example/number_format_ext_example.dart

import 'package:number_format_ext/number_format_ext.dart';
import 'package:decimal/decimal.dart';
import 'package:intl/intl.dart';
import 'package:rational/rational.dart';

void main() {
  final f22 = NumberFormat.decimalPattern();
  final f28 = NumberFormat.decimalPattern();

  f22.minimumFractionDigits = 2;
  f22.maximumFractionDigits = 2;

  f28.minimumFractionDigits = 2;
  f28.maximumFractionDigits = 8;

  final rational = Rational.parse('1.999999');
  // formater can't format Rational, please use formatWithCondition
  // print(f22.format(rational));

  /// !!!
  /*
  Direct use of double for precise calculations (such as finance) will cause accuracy problems. 
  It is not recommended to use double directly.
  Please use Decimal! Or you can customize some methods.

  // customize methods.
  // see: https://levelup.gitconnected.com/floating-point-arithmetic-issue-in-dart-189ccc1a78e8
  */
  print(0.3.toString()); // 0.3
  print((0.2 + 0.1).toString()); // 0.30000000000000004
  print(f28.formatWithCondition(0.3)); // 0.30
  print(f28.formatWithCondition(0.2 + 0.1)); // .30
  print(f28.formatWithCondition(0.2 + 0.1, ceil: true)); // 0.30000001

  /// Decimal is fine
  final d1 = Decimal.fromInt(1);
  print(f22.formatDecimalWithCondition(d1)); // 1.00
  print(f22.formatDecimalWithCondition(d1, floor: true)); // 1.00
  print(f22.formatDecimalWithCondition(d1, ceil: true)); // 1.00
  print(f28.formatDecimalWithCondition(d1)); // 1.00
  print(f28.formatDecimalWithCondition(d1, floor: true)); // 1.00
  print(f28.formatDecimalWithCondition(d1, ceil: true)); // 1.00

  final d1_19 = Decimal.parse('1.111111111');
  print(f22.formatDecimalWithCondition(d1_19)); // 1.11
  print(f22.formatDecimalWithCondition(d1_19, floor: true)); // 1.11
  print(f22.formatDecimalWithCondition(d1_19, ceil: true)); // 1.12
  print(f28.formatDecimalWithCondition(d1_19)); // 1.11111111
  print(f28.formatDecimalWithCondition(d1_19, floor: true)); // 1.11111111
  print(f28.formatDecimalWithCondition(d1_19, ceil: true)); // 1.11111112

  final d1_08_1 = Decimal.parse('1.000000001');
  print(f22.formatDecimalWithCondition(d1_08_1)); // 1.00
  print(f22.formatDecimalWithCondition(d1_08_1, floor: true)); // 1.00
  print(f22.formatDecimalWithCondition(d1_08_1, ceil: true)); // 1.01
  print(f28.formatDecimalWithCondition(d1_08_1)); // 1.00
  print(f28.formatDecimalWithCondition(d1_08_1, floor: true)); // 1.00
  print(f28.formatDecimalWithCondition(d1_08_1, ceil: true)); // 1.00000001

  final d1_99 = Decimal.parse('1.999999999');
  print(f22.formatDecimalWithCondition(d1_99)); // 2.00
  print(f22.formatDecimalWithCondition(d1_99, floor: true)); // 1.99
  print(f22.formatDecimalWithCondition(d1_99, ceil: true)); // 2.00
  print(f28.formatDecimalWithCondition(d1_99)); // 2.00
  print(f28.formatDecimalWithCondition(d1_99, floor: true)); // 1.99999999
  print(f28.formatDecimalWithCondition(d1_99, ceil: true)); // 2.00
}
2
likes
150
points
36
downloads

Publisher

verified publisherilikeplay.top

Weekly Downloads

Numberformat extnsion, Added floor and ceil methods to Numberformat.

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

decimal, intl, rational

More

Packages that depend on number_format_ext