如何在Java中显示2位小数的浮点数据输出?

我可以用System.out.print做到吗?

您可以使用printf方法,如下所示:

 System.out.printf("%.2f", val); 

简而言之, %.2f语法告诉Java从格式说明符( % )的开头以浮点数( f )的十进制表示forms返回带有2个小数位( .2 )的variables( val )。

除了f之外,还有其他的转换字符可以使用:

  • d :十进制整数
  • o :八进制整数
  • e :浮点科学记数法

在学习Java – 第5章中可以看到一些例子

您可以使用DecimalFormat 。 一种使用方法:

 DecimalFormat df = new DecimalFormat(); df.setMaximumFractionDigits(2); System.out.println(df.format(decimalNumber)); 

另一个是使用#.##格式构造它。

我发现所有的格式化选项比调用格式化方法的可读性都差,但这是一个优先select的问题。

我会build议使用String.format()如果你需要在你的代码中的String的值。

例如,您可以按以下方式使用String.format()

 float myFloat = 2.001f; String formattedString = String.format("%.02f", myFloat); 
 double d = 1.234567; DecimalFormat df = new DecimalFormat("#.##"); System.out.print(df.format(d)); 

很多人都提到DecimalFormat 。 但是如果你有最新版本的Java,你也可以使用printf

 System.out.printf("%1.2f", 3.14159D); 

有关printf格式string的更多信息,请参阅Formatter上的文档 。

 float f = 102.236569f; DecimalFormat decimalFormat = new DecimalFormat("#.##"); float twoDigitsF = Float.valueOf(decimalFormat.format(f)); // output is 102.24 

一个简单的窍门是通过将它乘以例如100来生成一个较短版本的variables,四舍五入并再次除以100.0 。 这样你就可以生成一个2位小数的variables:

 double new_variable = Math.round(old_variable*100) / 100.0; 

这个“便宜的技巧”对我来说总是够用的,而且可以用任何语言工作(我不是一个Java人,只是学习它)。

看DecimalFormat

这里是一个来自教程的例子:

  DecimalFormat myFormatter = new DecimalFormat(pattern); String output = myFormatter.format(value); System.out.println(value + " " + pattern + " " + output); 

如果你select一个像“###。##”这样的模式,你会得到两位小数,我认为这些数值是四舍五入的。 你会想看看链接,以获得你想要的确切格式(例如,是否要尾随零)

 float floatValue=22.34555f; System.out.print(String.format("%.2f", floatValue)); 

输出是22.35。 如果您需要3位小数点,请将其更改为“%.3f”。

OK – str漂浮。

 package test; import java.text.DecimalFormat; public class TestPtz { public static void main(String[] args) { String preset0 = "0.09,0.20,0.09,0.07"; String[] thisto = preset0.split(","); float a = (Float.valueOf(thisto[0])).floatValue(); System.out.println("[Original]: " + a); a = (float) (a + 0.01); // Part 1 - for display / debug System.out.printf("[Local]: %.2f \n", a); // Part 2 - when value requires to be send as it is DecimalFormat df = new DecimalFormat(); df.setMinimumFractionDigits(2); df.setMaximumFractionDigits(2); System.out.println("[Remote]: " + df.format(a)); } } 

输出:

 run: [Original]: 0.09 [Local]: 0.10 [Remote]: 0.10 BUILD SUCCESSFUL (total time: 0 seconds) 

小型简单的演示程序:

 import java.io.*; import java.util.Scanner; public class twovalues { public static void main(String args[]) { float a,b; Scanner sc=new Scanner(System.in); System.out.println("Enter Values For Calculation"); a=sc.nextFloat(); b=sc.nextFloat(); float c=a/b; System.out.printf("%.2f",c); } }