我能用System.out.print
吗?
printf
方法,像这样:System.out.printf("%.2f", val);
简而言之,%.2f
语法告诉 Java 在格式说明符 (%
) 的开始处返回变量 (val
) 的浮点数十进制表示,并保留两位小数点 (.2
)。除了 f
以外,还有其他的转换字符可供使用:
d
: 十进制整数o
: 八进制整数e
: 科学计数法表示的浮点数您可以使用DecimalFormat
。其中一种使用方法如下:
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
System.out.println(df.format(decimalNumber));
另一种方法是使用 #.##
格式构造它。
我发现所有格式选项都比调用格式化方法难以阅读,但这只是个人偏好。
System.out.printf("%.2f", value)
语法发生了什么?它还在使用吗? - Anthony Forloneydf.setMinimumFractionDigits(2);
以强制保留两位小数。 - Terel如果您需要在代码中将值转换为 String
,我建议使用 String.format()。
例如,您可以按以下方式使用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 df = new DecimalFormat("0.00");
语句。该语句用于创建一个格式化数字的对象,其输出将保留两位小数。 - K.Sopheakfloat f = 102.236569f;
DecimalFormat decimalFormat = new DecimalFormat("#.##");
float twoDigitsF = Float.valueOf(decimalFormat.format(f)); // output is 102.24
您可以使用下面的快速代码,它会在末尾自动更改自己。在小数点后添加多少个零,就添加多少个。
float y1 = 0.123456789;
DecimalFormat df = new DecimalFormat("#.00");
y1 = Float.valueOf(df.format(y1));
在代码执行前,变量y1的值为0.123456789。在代码执行后,它只剩下了0.12。
float floatValue=22.34555f;
System.out.print(String.format("%.2f", floatValue));
输出为22.35。 如果需要保留三位小数,请将其更改为"%.3f"。
100
,进行四舍五入并再次除以 100.0
来生成一个较短的版本。这样可以生成一个具有2个小数位的变量:double new_variable = Math.round(old_variable*100) / 100.0;
很多人提到了DecimalFormat
。但是如果你有最新版本的Java,也可以使用printf
:
System.out.printf("%1.2f", 3.14159D);
float f = (float)11/3;
System.out.print(String.format("%.2f",f));
输出结果: 3.67
> 使用%.3f表示小数点后三位。
String.format(java.util.Locale.US,"%.2f", val);
来确保输出格式的正确性。 - GominoLocale.FRANCE
? - ericksonLocale.US
作为“首选”太过了。如果您需要硬编码一个“中性”的区域设置用于大小写折叠、数字呈现等操作,请指定Locale.ROOT
。这适用于将被另一个程序使用而不是呈现给人类用户的文本。对于展示给用户的文本,要尊重他们的语言环境,无论他们是明确指定的还是默认值。 - erickson