Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我怎样才能让NumberFormat使用一种货币,但使用分数美分/便士?_Java_Scala_Format_Currency_Number Formatting - Fatal编程技术网

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来处理货币值,请参见美国货币舍入到小数点后两位,这样您的货币就可以这样格式化。如果你不想改变你的号码,你只想在你的号码前面加上一个货币符号,为什么不制定一个方法来做到这一点呢?