我有一个小的疯狂方法,将BigDecimal值转换为漂亮可读的字符串.
private String formatBigDecimal(BigDecimal bd){
DecimalFormat df = new DecimalFormat();
df.setMinimumFractionDigits(3);
df.setMaximumFractionDigits(3);
df.setMinimumIntegerDigits(1);
df.setMaximumIntegerDigits(3);
df.setGroupingSize(20);
return df.format(bd);
}
Run Code Online (Sandbox Code Playgroud)
然而,它还产生了一个所谓的分组分隔符",",它使我的所有值都出现如下:
xxx,xxx
Run Code Online (Sandbox Code Playgroud)
我确实需要分隔符是点或点而不是逗号.有没有人知道如何完成这个小壮举?
我已阅读本,尤其是这个,现在死,但我无法找到一个方法来完成这件事.我是以错误的方式接近这个吗?这样做有更优雅的方式吗?甚至可能是一个解决不同本地数字表示的解决方案,因为逗号将完全符合欧洲标准.
我想使用Java的DecimalFormat来格式化双打,如下所示:
#1 - 100 -> $100
#2 - 100.5 -> $100.50
#3 - 100.41 -> $100.41
Run Code Online (Sandbox Code Playgroud)
到目前为止我能想出的最好的是:
new DecimalFormat("'$'0.##");
Run Code Online (Sandbox Code Playgroud)
但这不适用于案例#2,而是输出"$ 100.5"
编辑:
很多这些答案只考虑案例#2和#3而没有意识到他们的解决方案会导致#1将100格式化为"$ 100.00"而不仅仅是"$ 100".
我正在尝试cl-format用来格式化钱.我想要(f 12345.555) ;=> "12,345.56".我得到格式字符串的小数,"~$"我得到逗号分隔符"~:D".我如何组合它们?
我确实从用户那里获得了价格,但我想过滤数字并输入,每 3 位数字如 123,123,123。
txtPrice.textProperty().addListener((observable, oldValue, newValue) -> {
if (!newValue.matches("\\d*")){
txtPrice.setText(newValue.replaceAll("[^\\d]",""));
}
});
Run Code Online (Sandbox Code Playgroud) java ×3
android ×1
bigdecimal ×1
clojure ×1
common-lisp ×1
formatting ×1
javafx ×1
textfield ×1