java: chuyển đổi float thành String và String thành float


211

Làm thế nào tôi có thể chuyển đổi từ float sang chuỗi hoặc chuỗi sang float?

Trong trường hợp của tôi, tôi cần thực hiện xác nhận giữa 2 chuỗi giá trị (giá trị mà tôi đã nhận được từ bảng) và giá trị float mà tôi đã tính toán.

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

Tôi đã thử từ float đến chuỗi:

String sSelectivityRate = String.valueOf(valueCalculated );

nhưng khẳng định thất bại


9
Bạn biết rằng floatcác giá trị không bao giờ chính xác?
xtofl

1
Bạn có muốn so sánh chúng như Stringhoặc như floatcác giá trị? Đây không phải là điều tương tự. floatít chính xác hơn doublevà có thể có lỗi làm tròn từ các giá trị được tính toán.
Peter Lawrey

3
google đừng nhầm lẫn với googol. ;)
Peter Lawrey

Tôi đã thử giải pháp cho bạn và cũng từ goggle nhưng khi tôi xác nhận tôi đã nhận được: java.lang.AssertsError: dự kiến: <25> nhưng là: <25.0>
lola

Câu trả lời:


378

Sử dụng Floatlớp của Java .

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

Để so sánh, luôn luôn tốt hơn để chuyển đổi chuỗi thành float và so sánh như hai float. Điều này là do đối với một số float có nhiều biểu diễn chuỗi, khác nhau khi được so sánh dưới dạng chuỗi (ví dụ: "25"! = "25.0"! = "25.00", v.v.)


Tôi có cần phải nhập một cái gì đó để làm việc này? Tôi nhận được loại không xác định 'Float' (Mặc dù tôi đang ở trong một môi trường java kỳ lạ, các tập lệnh openhab)
Jonathan

32

Chuyển sang chuỗi - String.valueOf ()

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

Chuỗi để nổi - Float.parseFloat ()

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

5

Bạn có thể thử mẫu mã này:

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());
    }
  }
}

tìm thấy ở đây


Cảm ơn - đã giúp tôi, cần bit bắt;)
Hein du Plessis

4

Tôi tin rằng đoạn mã sau sẽ giúp:

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

2

Đây là một câu trả lời có thể, điều này cũng sẽ cung cấp dữ liệu chính xác, chỉ cần thay đổi dấu thập phân ở dạng yêu cầu.

lớp công khai TestStandAlone {

    / **
     * 

Phương pháp này là chính

* @param lập luận * / public static void main (String [] args) { // TODO stub phương thức tự động tạo thử { Phao F1 = 152,32f; BigDecimal roundfinalprice = new BigDecimal (f1.floatValue ()). SetScale (2, BigDecimal.ROUND_HALF_UP); System.out.println ("f1 ->" + f1); Chuỗi s1 = roundfinalprice.toPlainString (); System.out.println ("s1" + s1); } bắt (Ngoại lệ e) { // TODO Khối bắt tự động được tạo e.printStackTrace (); } } }

Đầu ra sẽ là

F1 -> 152,32
s1 152,32

2

Nếu bạn đang tìm kiếm, hãy nói hai chữ số thập phân .. Float f = (float)12.34; String s = new DecimalFormat ("#.00").format (f);


1

Phương pháp này không phải là một phương pháp tốt, nhưng dễ dàng và không được đề xuất. Có lẽ tôi nên nói rằng đây là phương pháp kém hiệu quả nhất và thực hành mã hóa tồi tệ hơn, nhưng thú vị khi sử dụng,

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

các trích dẫn trống, thêm một chuỗi null vào str biến, upcasting 'val' cho loại chuỗi.


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

ba cách để chuyển đổi float thành String.

  1. "" + f
  2. Float.toString (f)
  3. Chuỗi.valueOf (f)

hai cách Convert String để nổi

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

Thí dụ:-

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);
    }

}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.