java - 如何使用十进制格式仅在整数中隐藏尾随零
问题描述
我需要这样的格式数字:
23.0 -> 23
23.20 -> 23.20
23.00 -> 23
23.11 -> 23.11
23.2 -> 23.20
23.999 -> 24
23.001 -> 23
1345.999 -> 1346 // Edited the question to add this from the OP's comment
这是我的代码:java:
public static String toPrice(double number) {
DecimalFormatSymbols formatSymbols = new DecimalFormatSymbols();
formatSymbols.setGroupingSeparator(' ');
DecimalFormat format = new DecimalFormat("#,###,###.##", formatSymbols);
return format.format(number);
}
科特林:
fun Double.toPrice(): String = DecimalFormat("#,###,###.##", DecimalFormatSymbols().apply {
groupingSeparator = ' '
}).format(this)
但是对于输入 23.20 或 23.2,我得到的结果是 23.2。这对我来说是错误的。我需要 23.20。我应该使用哪种字符串模式来实现这个结果?请帮我。
解决方案
public static String toPrice(double number) {
if (number == (int) number) {
return Integer.toString((int) number);
} else {
return String.format("%.2f", number);
}
}
编辑
包括千位分隔符
public static String toPrice(double number) {
if (number == (int) number) {
return String.format("%,d",(int)number);
} else {
return String.format("%,.2f", number);
}
}
推荐阅读
- javascript - 我可以在我的 chrome 扩展中添加 javascript 弹出框吗?
- android - Error: Program type already present: com.google.protobuf.DescriptorProtos$EnumDescriptorProto$Builder
- c++ - 这条 Intel Xeon mov 指令如何破坏我的应用程序的内存?
- r - 如何获取一段时间内某个年龄组的单位数?
- c++ - 在 sfml c++ 中移动一个圆圈时,球后面会出现结巴的轨迹故障
- python - 为什么 any() 比 in 快得多?
- bash - 在bash中将行转换为第n列之后的列
- python - 每类 cross_val_score 返回精度
- javascript - webRequest 可选权限和后台脚本
- javascript - 存储少量信息的最简单方法