Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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 具有最小2个小数位数的BigDecimal_Java_Currency_Tostring_Bigdecimal - Fatal编程技术网

Java 具有最小2个小数位数的BigDecimal

Java 具有最小2个小数位数的BigDecimal,java,currency,tostring,bigdecimal,Java,Currency,Tostring,Bigdecimal,我看到了,但我有一点不同的问题 我将带有BigDecimal参数的对象提供给PDF生成库,但我不能使用格式化程序,只能发送对象。默认toString方法是否总是以*.xx w.g 134.40格式写入BigDecimal对象 我使用setScale,但它不适用于例如134.300,因为它编写134.3而不是134.30只需使用NumberFormat.getCurrencyInstance().format(n)并将结果字符串传递到PDF生成库。只需使用NumberFormat.getCurre

我看到了,但我有一点不同的问题

我将带有BigDecimal参数的对象提供给PDF生成库,但我不能使用格式化程序,只能发送对象。默认toString方法是否总是以*.xx w.g 134.40格式写入BigDecimal对象


我使用setScale,但它不适用于例如134.300,因为它编写134.3而不是134.30

只需使用
NumberFormat.getCurrencyInstance().format(n)
并将结果字符串传递到PDF生成库。

只需使用
NumberFormat.getCurrencyInstance().format(n)
并将结果字符串传递到PDF生成库。

我假设问题在于您忘记了BigDecimal是不可变的,setScale不会改变现有的BigDecimal

BigDecimal decimal = BigDecimal.valueOf(134.4);
BigDecimal decimal2 = decimal.setScale(2, RoundingMode.HALF_UP);
System.out.println(decimal2);
印刷品

134.40
顺便说一句,用
double做同样的事情

double d = 134.4;
System.out.printf("%.2f%n", d);

我假设问题是您忘记了BigDecimal是不可变的,setScale不会改变现有的BigDecimal

BigDecimal decimal = BigDecimal.valueOf(134.4);
BigDecimal decimal2 = decimal.setScale(2, RoundingMode.HALF_UP);
System.out.println(decimal2);
印刷品

134.40
顺便说一句,用
double做同样的事情

double d = 134.4;
System.out.printf("%.2f%n", d);

当你尝试时它给出了什么??你尝试过这个-
yourBigDecimal.SetScale(2,RoundingMode.HALF_UP)当你尝试时它给出了什么??你有没有尝试过这个-
yourBigDecimal.SetScale(2,RoundingMode.HALF_UP)