将数字转换为带有2位小数的浮点数

时间:2012-11-27 21:21:04

标签: java decimal

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 

如此格式化的值将被分配给一个浮点数......如何实现这一目标?

4 个答案:

答案 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