如何在 Java 的 DecimalFormat 中使用加点到货币?

问题描述

我正在尝试找到一种用点显示货币的方法,例如它应该是

1.234,56 kr。

目前我正在使用

pattern = "#,##0.00 ¤";
new DecimalFormat(pattern);

这不起作用,因为丹麦克朗出于某种原因被定义为 kr 而不是官方认可的 kr。

我一直在寻找一种使用 Unicode 值来转义这些字符的方法,我将添加到模式中,但这不起作用。在此处的 official 文档中,我也没有看到这样做的方法

TLDR:我想在货币符号后添加句号。所以目前我有这样的 kr ,我想要的是 kr. .

解决方法

如果您只想要货币符号后的点,您可以设置自定义货币符号。在这里,我使用欧元(请注意,您可以使用 my_symbol.getCurrencySymbol()+"." 而不是 "€.",如果您想要所有货币,而不仅仅是一种货币):

    DecimalFormatSymbols my_symbol = new DecimalFormatSymbols();
    my_symbol.setCurrencySymbol("€.");
    String pattern = "###,###.###¤";
    DecimalFormat decimalFormat1 = new DecimalFormat(pattern,my_symbol);

    String format = decimalFormat1.format(987654321.321);
    System.out.println(format);

这给了

987.654.321,321€.
,

货币值的输出取决于各自的国家/地区设置。如果您想像您的情况一样显式地使用小数点,则必须为 plotting <- function(RP,title) { parC <- list(unit=100,labelx="Time",labely="Time",cols="black",pcex=.01,pch=1,las=1,labax=seq(0,nrow(RP),100),labay=seq(0,100)) ... plot(tstamp,tstamp,type="n",xlab="",ylab="",xaxt="n",yaxt="n",main=title) ... } params <- expand.grid(RP_values=RP_values,name=name) out <- mapply(plotting,RP=params$RP_values,title=params$name) 设置相应的语言环境。例如。英语一点。

例如:

Numberformat

编辑:如果您需要更多控制,您还可以执行以下操作:

public String FormatWithPoint(double yourValue){
    NumberFormat nf = NumberFormat.getNumberInstance(Locale.ENGLISH);
    nf.setGroupingUsed(false);
    return nf.format(yourValue);
}