Answers:
您可以使用该printf
方法,如下所示:
System.out.printf("%.2f", val);
简而言之,%.2f
语法告诉Java 从格式说明符()的开头,以浮点数val
(.2
)的十进制表示形式返回具有小数点后两位()的变量f
(%
)。
除了f
:还可以使用其他转换字符:
d
:十进制整数o
:八进制整数e
:科学计数法中的浮点数Locale.FRANCE
呢?
Locale.US
实在是太过分了。如果您需要硬编码“中性”语言环境以进行案例折叠,数字呈现等,请指定Locale.ROOT
。这将适合于另一个程序将使用的文本,而不是供人类用户使用的文本。对于呈现给用户的文本,请遵守他们的语言环境,无论他们是明确指定的语言环境还是默认语言。
您可以使用DecimalFormat
。一种使用方式:
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
System.out.println(df.format(decimalNumber));
另一个是使用#.##
格式构造它。
我发现所有格式化选项的可读性都比调用格式化方法的可读性差,但这是优先选择的问题。
System.out.printf("%.2f", value)
语法发生了什么?还在吗?
DecimalFormat
答案时,我立即以为自己是错的,但是感谢您的澄清。
df.setMinimumFractionDigits(2);
二位数
如果您需要在代码中使用a值,我建议使用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 df = new DecimalFormat("0.00");
float floatValue=22.34555f;
System.out.print(String.format("%.2f", floatValue));
输出为22.35。如果需要3个小数点,请将其更改为“%.3f”。
很多人都提到过DecimalFormat
。但是,printf
如果您使用的是Java的最新版本,也可以使用:
System.out.printf("%1.2f", 3.14159D);
您可以在下面更改的快速代码下面使用此快速代码。在该点之后添加参考的零个数
float y1 = 0.123456789;
DecimalFormat df = new DecimalFormat("#.00");
y1 = Float.valueOf(df.format(y1));
变量y1 之前等于0.123456789。代码之后,它仅变为0.12。
这是教程中的一个示例:
DecimalFormat myFormatter = new DecimalFormat(pattern);
String output = myFormatter.format(value);
System.out.println(value + " " + pattern + " " + output);
如果选择“ ###。##”之类的模式,则将获得两位小数,并且我认为这些值会四舍五入。您将需要查看链接以获取所需的确切格式(例如,是否要尾随零)
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);
}
}
一个让我呆了一个小时或更长时间的问题DecimalFormat
-它以不同的方式处理double和float输入。即使更改RoundingMode也无济于事。我不是专家,但认为它可以帮助像我这样的人。最终Math.round
改为使用。见下文:
DecimalFormat df = new DecimalFormat("#.##");
double d = 0.7750;
System.out.println(" Double 0.7750 -> " +Double.valueOf(df.format(d)));
float f = 0.7750f;
System.out.println(" Float 0.7750f -> "+Float.valueOf(df.format(f)));
// change the RoundingMode
df.setRoundingMode(RoundingMode.HALF_UP);
System.out.println(" Rounding Up Double 0.7750 -> " +Double.valueOf(df.format(d)));
System.out.println(" Rounding Up Float 0.7750f -> " +Float.valueOf(df.format(f)));
输出:
Double 0.7750 -> 0.78
Float 0.7750f -> 0.77
Rounding Up Double 0.7750 -> 0.78
Rounding Up Float 0.7750f -> 0.77
试试这个:-
private static String getDecimalFormat(double value) {
String getValue = String.valueOf(value).split("[.]")[1];
if (getValue.length() == 1) {
return String.valueOf(value).split("[.]")[0] +
"."+ getValue.substring(0, 1) +
String.format("%0"+1+"d", 0);
} else {
return String.valueOf(value).split("[.]")[0]
+"." + getValue.substring(0, 2);
}
}
String.format(java.util.Locale.US,"%.2f", val);