java: float'ı String'e ve String'i float'a dönüştür


211

Şamandıradan dizeye veya dizeden float'a nasıl dönüştürebilirim?

Benim durumumda 2 değer dizesi (tablodan aldım değer) ve hesapladığım kayan nokta değeri arasındaki iddiayı yapmam gerekiyor.

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

Kayan noktadan dizeye denedim:

String sSelectivityRate = String.valueOf(valueCalculated );

ama iddia başarısız oluyor


9
Eğer vardır farkında floatdeğerler kesin asla?
xtofl

1
Bunları değer olarak Stringveya floatdeğer olarak karşılaştırmak ister misiniz ? Bu aynı şey değil. hesaplanan değerlerden floatdaha az kesindir doubleve ya yuvarlama hataları olabilir.
Peter Lawrey

3
google, googol ile karıştırılmamalıdır. ;)
Peter Lawrey

Size çözüm denedim ve aynı zamanda gözlüğü denedim ama iddiayı yaptığımda: java.lang.AssertionError: beklenen: <25> ama oldu: <25.0>
lola

Yanıtlar:


379

Java Floatsınıfını kullanma .

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

Karşılaştırma yapmak için ipi float'a dönüştürmek ve iki float olarak karşılaştırmak her zaman daha iyidir. Bunun nedeni, bir kayan noktalı sayı için, dizelerle karşılaştırıldığında farklı olan çok sayıda dize gösteriminin olmasıdır (örneğin, "25"! = "25.0"! = "25.00" vb.)


Bunun çalışması için bir şey içe aktarmam gerekir mi? Doğrulanmamış tip 'Float' alıyorum (Yine de garip bir java ortamındayım, openhab komut dosyaları)
Jonathan

32

Dizeye kayar - String.valueOf ()

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

Kayan Dize - Float.parseFloat ()

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

5

Bu kod örneğini deneyebilirsiniz:

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

burada bulundu


Teşekkürler - bana yardımcı oldu, yakalamak biraz gerekli;)
Hein du Plessis

4

Aşağıdaki kod yardımcı olacağına inanıyorum:

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

2

Bu olası bir cevaptır, bu da kesin verileri verecektir, sadece gerekli formdaki ondalık noktasını değiştirmeniz gerekir.

public class TestStandAlone {

    / **
     * 

Bu yöntem ana

* @param args geçersiz * / public static void main (Dize [] args) { // TODO Otomatik oluşturulan yöntem saplaması Deneyin { Float f1 = 152.32f; BigDecimal roundfinalPrice = yeni BigDecimal (f1.floatValue ()). SetScale (2, BigDecimal.ROUND_HALF_UP); System.out.println ("f1 ->" + f1); Dize s1 = roundfinalPrice.toPlainString (); System.out.println ("s1" + s1); } catch (İstisna e) { // TODO Otomatik oluşturulan yakalama bloğu e.printStackTrace (); } } }

Çıktı

f1 -> 152.32
s1 152.32

2

Eğer arıyorsanız, iki ondalık basamağı söyleyin .. Float f = (float)12.34; String s = new DecimalFormat ("#.00").format (f);


1

iyi bu yöntem iyi bir yöntem değil, kolay ve önerilmiyor. Belki de bunun en az etkili yöntem ve daha kötü kodlama uygulaması olduğunu söylemeliyim, ama kullanımı eğlenceli,

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

boş tırnak işaretleri, str değişkenine 'val' yayınlayarak str değişkenine boş bir dize ekleyin.


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

Şamandırayı String'e dönüştürmenin üç yolu vardır .

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

String'i float'a dönüştürmenin iki yolu vardır

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

Misal:-

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

}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.