java: convert float ke String dan String ke float


211

Bagaimana saya bisa mengkonversi dari float ke string atau string ke float?

Dalam kasus saya, saya perlu membuat pernyataan antara 2 nilai string (nilai yang saya dapatkan dari tabel) dan nilai float yang telah saya hitung.

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

Saya mencoba dari float ke string:

String sSelectivityRate = String.valueOf(valueCalculated );

tetapi pernyataan itu gagal


9
Anda adalah menyadari bahwa floatnilai-nilai yang tidak pernah tepat?
xtofl

1
Apakah Anda ingin membandingkannya sebagai Stringatau sebagai floatnilai? Ini bukan hal yang sama. floatkurang tepat daripada doubledan dapat memiliki kesalahan pembulatan dari nilai yang dihitung.
Peter Lawrey

3
google jangan bingung dengan googol. ;)
Peter Lawrey

Saya mencoba solusi Anda dan juga dari goggle tetapi ketika saya membuat pernyataan saya mendapat: java.lang.AssertionError: diharapkan: <25> tetapi: <25.0>
lola

Jawaban:


379

Menggunakan Floatkelas Java .

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

Untuk membandingkan selalu lebih baik untuk mengubah string menjadi mengambang dan membandingkan sebagai dua pelampung. Ini karena untuk satu angka float ada beberapa representasi string, yang berbeda jika dibandingkan sebagai string (mis. "25"! = "25.0"! = "25.00" dll.)


Apakah saya perlu mengimpor sesuatu agar ini berfungsi? Saya mendapatkan tipe 'Float' tanpa definisi (saya berada di lingkungan java yang aneh, skrip openhab)
Jonathan

32

Float ke string - String.valueOf ()

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

String to Float - Float.parseFloat ()

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

5

Anda dapat mencoba contoh kode ini:

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

ditemukan di sini


Terima kasih - membantu saya, membutuhkan sedikit hasil;)
Hein du Plessis

4

Saya percaya kode berikut akan membantu:

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

2

Ini adalah jawaban yang mungkin, ini juga akan memberikan data yang tepat, hanya perlu mengubah titik desimal dalam bentuk yang diperlukan.

TestStandAlone kelas publik {

    / **
     * 

Metode ini untuk main

* @param args batal * / public static public void (String [] args) { // TODO rintisan metode yang dihasilkan secara otomatis coba { Float f1 = 152.32f; BigDecimal roundfinalPrice = BigDecimal baru (f1.floatValue ()). SetScale (2, BigDecimal.ROUND_HALF_UP); System.out.println ("f1 ->" + f1); String s1 = roundfinalPrice.toPlainString (); System.out.println ("s1" + s1); } catch (Exception e) { // TODO Blok tangkap yang dibuat secara otomatis e.printStackTrace (); } } }

Output akan menjadi

f1 -> 152,32
s1 152,32

2

Jika Anda mencari, ucapkan dua tempat desimal .. Float f = (float)12.34; String s = new DecimalFormat ("#.00").format (f);


1

baik metode ini bukan yang baik, tetapi mudah dan tidak disarankan. Mungkin saya harus mengatakan ini adalah metode yang paling tidak efektif dan praktik pengkodean yang lebih buruk tetapi, menyenangkan untuk digunakan,

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

tanda kutip kosong, tambahkan string nol ke str variabel, upcasting 'val' ke tipe string.


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

Ada tiga cara untuk mengkonversi float ke String.

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

Ada dua cara Convert String ke float

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

Contoh:-

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

}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.