Dart - NumberFormat

mat*_*h3o 10 number-formatting dart

有没有办法NumberFormat显示:

  • 如果双值为15.00,则为'15'
  • '15 .50',如果双倍值是15.50

谢谢你的帮助.

mar*_*tin 23

其实,我觉得它更容易去truncateToDouble()toStringAsFixed(),而不是用NumberFormat在所有的:

n.toStringAsFixed(n.truncateToDouble() == n ? 0 : 2);
Run Code Online (Sandbox Code Playgroud)

例如:

main() {
  double n1 = 15.00;
  double n2 = 15.50;

  print(format(n1));
  print(format(n2));
}

String format(double n) {
  return n.toStringAsFixed(n.truncateToDouble() == n ? 0 : 2);
}
Run Code Online (Sandbox Code Playgroud)

打印到控制台:

15
15.50
Run Code Online (Sandbox Code Playgroud)

  • 我不得不对此嗤之以鼻,对于一种声称喜欢简洁的语言 (3认同)
  • 这并不适用于所有情况。例如,如果您的值为“n1 = 15.0001”,则结果字符串将为“15.00”。像 `return n.toStringAsFixed(2).endsWith('.00') 之类的东西?n.toStringAsFixed(0) : n.toStringAsFixed(2);` 可以工作,但可能有点冗长。 (2认同)

Kul*_*Kul 6

编辑: Martin 发布的解决方案看起来更好

我认为这不能直接完成。你很可能需要这样的东西:

final f = new NumberFormat("###.00");

String format(num n) {
  final s = f.format(n);
  return s.endsWith('00') ? s.substring(0, s.length - 3) : s;
}
Run Code Online (Sandbox Code Playgroud)

  • 我不知道为什么没有人提到,这是一个 [外部包](https://pub.dartlang.org/packages/intl) 如果您需要使用它。 (5认同)