如何在Java中打印保留2位小数的浮点数?
我可以使用 System.out.print 来实现吗?
Can I do it with System.out.print
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我可以使用 System.out.print 来实现吗?
Can I do it with System.out.print
?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(19)
您可以使用
printf
方法,如下所示:简而言之,
%.2f
语法告诉 Java 返回您的具有 2 位小数 (.2
) 的变量 (val
),以浮点数 (f
) 的十进制表示形式从开头开始格式说明符 (%
)。除了
f
之外,您还可以使用其他转换字符:d
:十进制整数o
:八进制整数e
:浮动- 科学记数法中的点You can use the
printf
method, like so:In short, the
%.2f
syntax tells Java to return your variable (val
) with 2 decimal places (.2
) in decimal representation of a floating-point number (f
) from the start of the format specifier (%
).There are other conversion characters you can use besides
f
:d
: decimal integero
: octal integere
: floating-point in scientific notation您可以使用
DecimalFormat
。使用它的一种方法:另一种方法是使用
#.##
格式构造它。我发现所有格式化选项的可读性都不如调用格式化方法,但这是一个偏好问题。
You can use
DecimalFormat
. One way to use it:Another one is to construct it using the
#.##
format.I find all formatting options less readable than calling the formatting methods, but that's a matter of preference.
我建议使用 String.format() 如果您需要在代码中将值作为
String
。例如,您可以按以下方式使用
String.format()
:I would suggest using String.format() if you need the value as a
String
in your code.For example, you can use
String.format()
in the following way:您可以使用下面的快速代码,该代码最后会自行更改。在点后添加多少个 as 所指的零
You may use this quick codes below that changed itself at the end. Add how many zeros as refers to after the point
输出为 22.35。
如果需要 3 位小数,请将其更改为“%.3f”。
Output is 22.35.
If you need 3 decimal points change it to "%.3f".
很多人都提到过
DecimalFormat
。但如果您有最新版本的 Java,也可以使用printf
:有关 printf 格式字符串的更多信息,请参阅格式化程序上的文档。
Many people have mentioned
DecimalFormat
. But you can also useprintf
if you have a recent version of Java:See the docs on the Formatter for more information about the printf format string.
一个简单的技巧是通过将变量乘以例如
100
、四舍五入并再次除以100.0
来生成变量的较短版本。这样你就生成了一个带有2位小数的变量:这个“便宜的技巧”对我来说总是足够好,并且适用于任何语言(我不是Java人,只是学习它)。
A simple trick is to generate a shorter version of your variable by multiplying it with e.g.
100
, rounding it and dividing it by100.0
again. This way you generate a variable, with 2 decimal places:This "cheap trick" was always good enough for me, and works in any language (I am not a Java person, just learning it).
在 Java 中打印最多 2 位小数的浮点数:
>使用 %.3f 最多保留三位小数。
To print a float up to 2 decimal places in Java:
> use %.3f for up to three decimal places.
查看 DecimalFormat
以下是教程中的示例:
如果您选择像“###.##”这样的模式,您将获得两位小数,并且我认为这些值已四舍五入。您需要查看链接以获得所需的确切格式(例如,是否需要尾随零)
Look at DecimalFormat
Here is an example from the tutorial:
If you choose a pattern like "###.##", you will get two decimal places, and I think that the values are rounded up. You will want to look at the link to get the exact format you want (e.g., whether you want trailing zeros)
下面是如何在 Java 中显示具有 2 位小数的浮点数据输出的代码:
Below is code how you can display an output of float data with 2 decimal places in Java:
在
DecimalFormat
上,有一个问题让我花了一个小时或更长时间 - 它以不同的方式处理双精度和浮点输入。即使更改 RoundingMode 也没有帮助。我不是专家,但认为它可以帮助像我这样的人。最终使用Math.round
代替。见下图:
输出:
One issue that had me for an hour or more, on
DecimalFormat
- It handles double and float inputs differently. Even change of RoundingMode did not help. I am no expert but thought it may help someone like me. Ended up usingMath.round
instead.See below:
Output:
OK - str 为浮动。
输出:
OK - str to float.
Output:
还要注意
NumberFormatException
Take care of
NumberFormatException
as well用于演示的简单小程序:
small simple program for demonstration:
如果您想确保独立于语言环境,只需执行
String str = System.out.printf("%.2f", val).replace(",", ".");
用户,您总是会得到/显示一个“。”作为小数点分隔符。如果您不想在稍后进行某种转换(例如 float f = Float.parseFloat(str); )时使程序崩溃,那么这是必须的Just do
String str = System.out.printf("%.2f", val).replace(",", ".");
if you want to ensure that independently of the Locale of the user, you will always get / display a "." as decimal separator. This is a must if you don't want to make your program crash if you later do some kind of conversion likefloat f = Float.parseFloat(str);
试试这个:-
Try this:-
您可以简单地使用此代码来格式化小数精度。
you can simply use this code for formatting decimal precission.