Java 我怎样才能让NumberFormat使用一种货币,但使用分数美分/便士?
我想使用Java 我怎样才能让NumberFormat使用一种货币,但使用分数美分/便士?,java,scala,format,currency,number-formatting,Java,Scala,Format,Currency,Number Formatting,我想使用NumberFormat将Double转换为String。我目前使用的是基于货币区域设置的NumberFormat,但这将双精度四舍五入到小数点后2位。我怎么能让它不把货币四舍五入,让它包含小数点的便士呢 所以如果我有 val doubleFormatMoney = 1.032323135 val format = NumberFormat.getCurrencyInstance(Locale.US) val stringFormatMoney = format.format(dou
NumberFormat
将Double
转换为String
。我目前使用的是基于货币区域设置的NumberFormat
,但这将双精度
四舍五入到小数点后2位。我怎么能让它不把货币四舍五入,让它包含小数点的便士呢
所以如果我有
val doubleFormatMoney = 1.032323135
val format = NumberFormat.getCurrencyInstance(Locale.US)
val stringFormatMoney = format.format(doubleFormatMoney)
然后我们应该有
stringFormatMoney=$1.032323135
,但我得到的是stringFormatMoney=$1.03
,每个地区的货币格式规范包括要使用的小数位数,因为这随货币而异(一些货币使用3dp,例如约旦第纳尔)。因此,NumberFormat.getCurrencyInstance(Locale.US)
包括根据定义舍入到2dp
如果要使用标准的Double
toString
加上区域设置的货币符号,可以执行以下操作:
Currency.getInstance(Locale.US).getSymbol(Locale.US) + doubleFormatMoney
请参见每个语言环境的货币格式规范包括要使用的小数位数,因为这因货币而异(某些货币使用3dp,例如约旦第纳尔)。因此,
NumberFormat.getCurrencyInstance(Locale.US)
包括根据定义舍入到2dp
如果要使用标准的Double
toString
加上区域设置的货币符号,可以执行以下操作:
Currency.getInstance(Locale.US).getSymbol(Locale.US) + doubleFormatMoney
请参见为什么不包括适用的代码?这将使回答更容易。您可以更改所选的数字格式,System.out.println(“+新双精度(1d/3d));注意,在第一位不应该使用Double来处理货币值,请参见美国货币舍入到小数点后两位,这样您的货币就可以这样格式化。如果您不想更改数字,只想在数字前面添加一个货币符号,为什么不制定一个方法来实现这一点?为什么不包括适用的代码?这将使回答更容易。您可以更改所选的数字格式,System.out.println(“+新双精度(1d/3d));注意,在第一位不应该使用Double来处理货币值,请参见美国货币舍入到小数点后两位,这样您的货币就可以这样格式化。如果你不想改变你的号码,你只想在你的号码前面加上一个货币符号,为什么不制定一个方法来做到这一点呢?