是否可以显示NumberFormat
:
感谢您的帮助。
答案 0 :(得分:8)
实际上,我认为使用truncateToDouble()
和toStringAsFixed()
更容易,而根本不使用NumberFormat
:
n.toStringAsFixed(n.truncateToDouble() == n ? 0 : 2);
例如:
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);
}
打印到控制台:
15
15.50
答案 1 :(得分:4)
编辑: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;
}
答案 2 :(得分:0)
不是很容易。如果它是一个整数值,那么解释你想要的打印零小数位数,如果它是一个浮点数就恰好是两个,你可以做
{{1}}
但除非您希望结果针对不同的区域设置进行不同的打印,否则使用NumberFormat的优势很小。
答案 3 :(得分:0)
也许您不想使用NumberFormat:
class DoubleToString {
String format(double toFormat) {
return (toFormat * 10) % 10 != 0 ?
"$toFormat" :
"${toFormat.toInt()}";
}
}
答案 4 :(得分:0)
双值格式的一种变体:
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>
答案 5 :(得分:0)
这将起作用。
main() {
double n1 = 15.00;
double n2 = 15.50;
print(_formatDecimal(n1));
print(_formatDecimal(n2));
}
_formatDecimal(double value) {
if (value % 1 == 0) return value.toStringAsFixed(0).toString();
return value.toString();
}
输出:
15
15.5
答案 6 :(得分:0)
另一种解决方案,用于NumbeFormat的字符串输出:
final f = NumberFormat("###.00");
print(f.format(15.01).replaceAll('.00'. ''));
print(f.format(15.00).replaceAll('.00'. ''));