Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.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
使用decimalFormat错误设置精度-Java_Java_Format_Double_Rounding - Fatal编程技术网

使用decimalFormat错误设置精度-Java

使用decimalFormat错误设置精度-Java,java,format,double,rounding,Java,Format,Double,Rounding,我第一次尝试使用DecimalFormat java类,遇到了一个奇怪的问题。我想要125.295到125.30。我认为格式应该自动包含0,但可能我不正确 double num = 125.295; DecimalFormat df = new DecimalFormat("#.##"); df.setRoundingMode(RoundingMode.HALF_UP); String str = df.format(num); System.out.println(str); //this i

我第一次尝试使用DecimalFormat java类,遇到了一个奇怪的问题。我想要125.295到125.30。我认为格式应该自动包含0,但可能我不正确

double num = 125.295;
DecimalFormat df = new DecimalFormat("#.##");
df.setRoundingMode(RoundingMode.HALF_UP);
String str = df.format(num);
System.out.println(str); //this is yielding 125.3 instead of 125.30

请帮助并提前感谢您

DecimalFormat类将“#”视为“隐藏尾随的零”,或将“0”视为“显示零”。根据DecimalFormat的API:

0   Number  Yes Digit
#   Number  Yes Digit, zero shows as absent

因此,如果希望它显示尾随的零,则应使用DecimalFormat(“#.00”)而不是DecimalFormat(“#.#.##”)。

尝试使用
DecimalFormat
如下:

   double num = 125.295;
   DecimalFormat df = new DecimalFormat("###.00");
   System.out.println("sum (DecimalFormat) : " + df.format(num));
输出:

   125.30

在小数点不改变任何东西之前,使用
new DecimalFormat(“#.00”)
指定更多的
。@Andreas现在更有效的第二个例子是
125.3
,这正是OP不想要的。@Andreas ok Andreas正在删除第二种可能性