java:将float转换为String并将String转换为float


211

如何从float转换为string或从string转换为float?

在我的情况下,我需要在2个值字符串(我从表中获得的值)和我计算出的浮点值之间进行断言。

String valueFromTable = "25";
Float valueCalculated =25.0;

我尝试从浮动到字符串:

String sSelectivityRate = String.valueOf(valueCalculated );

但是断言失败


9
知道float的值是从来没有准确?
xtofl 2011年

1
您要将它们String作为float值进行比较还是作为值进行比较?这不是同一回事。float的精度不及double其中任何一个都可能会因计算值而产生舍入误差。
彼得·劳瑞

3
google不要与googol混淆。;)
Peter Lawrey 2011年

我尝试了解决方案,也通过护目镜尝试了问题,但是当我做出断言时,我得到了:java.lang.AssertionError:预期:<25>,但是却是:<25.0>
lola

Answers:


378

使用Java的Float类。

float f = Float.parseFloat("25");
String s = Float.toString(25.0f);

为了进行比较,将字符串转换为float并比较两个float总是更好。这是因为对于一个浮点数,存在多个字符串表示形式,与字符串相比,它们是不同的(例如“ 25”!=“ 25.0”!=“ 25.00”等)。


我需要导入一些东西才能工作吗?我得到了未定义的类型'Float'(尽管我在怪异的Java环境中,openhab脚本)
Jonathan

32

浮动到字符串-String.valueOf()

float amount=100.00f;
String strAmount=String.valueOf(amount);
// or  Float.toString(float)

浮动字符串-Float.parseFloat()

String strAmount="100.20";
float amount=Float.parseFloat(strAmount)
// or  Float.valueOf(string)

5

您可以尝试以下代码示例:

public class StringToFloat
{

  public static void main (String[] args)
  {

    // String s = "fred";    // do this if you want an exception

    String s = "100.00";

    try
    {
      float f = Float.valueOf(s.trim()).floatValue();
      System.out.println("float f = " + f);
    }
    catch (NumberFormatException nfe)
    {
      System.out.println("NumberFormatException: " + nfe.getMessage());
    }
  }
}

这里找到


谢谢-帮助我,需要帮助;)
Hein du Plessis'Hein du Plessis

4

我相信以下代码会有所帮助:

float f1 = 1.23f;
String f1Str = Float.toString(f1);      
float f2 = Float.parseFloat(f1Str);

2

这是一个可能的答案,这也将提供精确的数据,只需要更改所需形式的小数点即可。

公共类TestStandAlone {

    / **
     * 

这种方法主要是

* @参数args无效 * / 公共静态void main(String [] args){ // TODO自动生成的方法存根 尝试{ 浮点数f1 = 152.32f; BigDecimal roundfinalPrice =新的BigDecimal(f1.floatValue())。setScale(2,BigDecimal.ROUND_HALF_UP); System.out.println(“ f1->” + f1); 字符串s1 = roundfinalPrice.toPlainString(); System.out.println(“ s1” + s1); } catch(Exception e){ // TODO自动生成的catch块 e.printStackTrace(); } } }

输出将是

f1-> 152.32
s1 152.32

2

如果您要查找,请说出两位小数。 Float f = (float)12.34; String s = new DecimalFormat ("#.00").format (f);


1

好吧,这种方法不是一个好方法,但是简单却不建议使用。也许我应该说这是最无效的方法,也是较差的编码实践,但是,使用起来很有趣,

float val=10.0;
String str=val+"";

用空引号将空字符串添加到变量str,将“ val”转换为字符串类型。


0
String str = "1234.56";
float num = 0.0f;

int digits = str.length()- str.indexOf('.') - 1;

float factor = 1f;

for(int i=0;i<digits;i++) factor /= 10;

for(int i=str.length()-1;i>=0;i--){

    if(str.charAt(i) == '.'){
        factor = 1;
        System.out.println("Reset, value="+num);
        continue;
    }

    num += (str.charAt(i) - '0') * factor;
    factor *= 10;
}

System.out.println(num);

0

三种float转换为String的方法。

  1. “” + f
  2. Float.toString(f)
  3. String.valueOf(f)

两种方法可以将String转换为float

  1. Float.valueOf(str)
  2. Float.parseFloat(str);

例:-

public class Test {

    public static void main(String[] args) {
        System.out.println("convert FloatToString " + convertFloatToString(34.0f));

        System.out.println("convert FloatToStr Using Float Method " + convertFloatToStrUsingFloatMethod(23.0f));

        System.out.println("convert FloatToStr Using String Method " + convertFloatToStrUsingFloatMethod(233.0f));

        float f = Float.valueOf("23.00");
    }

    public static String convertFloatToString(float f) {
        return "" + f;
    }

    public static String convertFloatToStrUsingFloatMethod(float f) {
        return Float.toString(f);
    }

    public static String convertFloatToStrUsingStringMethod(float f) {
        return String.valueOf(f);
    }

}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.