intlパッケージのNumberFormatについて

参考にした記事

https://qiita.com/mcz9mm/items/e1407ad24384eb92737d

どこで躓いたか

上記記事の、「3桁区切り小数点2桁まで」において、Formatを以下のように記載している。

final formatter = NumberFormat("#,###.0#"); // ←これ
var value = (50101214 / 10000);
var result = formatter.format(value);
print(result+'万円'); //5,010.12万円

これ自体は正しいが、例えば 1234.1という数字に対して3桁区切り、小数点2桁まで(0であっても)表示したい場合、お尻の0は省略されてしまう。

解決法

公式ドキュメント(https://api.flutter.dev/flutter/intl/NumberFormat-class.html)によると、

0 A single digit
# A single digit, omitted if the value is zero

らしいので、小数点の表示フォーマットに#でなく0を使うと省略されずに表示できる。

final formatter = NumberFormat("#,###.00");