float f = 0.00f;
System.out.println(f);
给出输出:
0.00
我想将一个百分比表示的数字格式化为2位小数。但结果 应为浮点数 且不为字符串。
e.g。
10.001 needs to be converted to 10.00
0.0 needs to be converted to 0.00
78.8 needs to be converted to 78.80
如此格式化的值将被分配给一个浮点数......如何实现这一目标?
答案 0 :(得分:7)
private float parse(float val){
DecimalFormat twoDForm = new DecimalFormat("#.##");
return Float.valueOf(twoDForm.format(val));
}
只要你调用它传递一个有效的浮点数,你的结果就是浮点数。 但如果它不是一个字符串,你就无法显示最正的零。
答案 1 :(得分:2)
在一般情况下,你不能这样做。无法保证特定的十进制值可以由只有十进制右边两位数的浮点表示。
浮点数是这种精度的错误数据类型。您需要使用十进制类型或缩放整数。
作业的工作方式相同。如果将值133.47分配给浮点变量,则您的环境会将最接近的有效浮点数分配给变量。最接近的有效浮点数可能不是133.47。
您可以在C。
中编译和执行该程序#include <stdio.h>
int main (void) {
float r;
r = 133.47;
printf("%.2f, %f\n", r, r);
return 0;
}
它在我的系统上打印这些值
$ ./a.out
133.47, 133.470001
格式化为两位小数改变了'r'的样子,但它没有改变它的值。您的系统将根据实际值而不是格式化值执行浮点运算。 (除非您也更改数据类型。)
答案 2 :(得分:0)
浮动没有小数位。他们有二进制位置。因此,可以精确表示在浮点数到两位小数位的唯一分数是0,0.25,0.5,0.75。在所有其他情况下,你所要求的是不可能的。
答案 3 :(得分:0)
import java.text.DecimalFormat;
public class Padding {
public static void main(String[] args) {
float value = 10.001f;
DecimalFormat decimal = new DecimalFormat("0.00");
String formattedValue = decimal.format(value);
System.out.println(formattedValue);
}
}
输出:10.00