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

1
คุณต้องการที่จะเปรียบเทียบพวกเขาเป็นStringหรือเป็นfloatค่า? นี่ไม่ใช่สิ่งเดียวกัน floatมีความแม่นยำน้อยกว่าdoubleและอาจมีข้อผิดพลาดในการปัดเศษจากค่าที่คำนวณได้
Peter Lawrey

3
google เพื่อไม่ให้สับสนกับ googol ;)
Peter Lawrey

ฉันพยายามแก้ปัญหาและจาก goggle แต่เมื่อฉันยืนยันฉันได้รับ: java.lang.AssertionError: คาดว่า: <25> แต่เป็น: <25.0>
lola

คำตอบ:


379

ใช้Floatคลาสของ Java

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

เพื่อเปรียบเทียบจะดีกว่าเสมอที่จะแปลงสตริงให้ลอยและเปรียบเทียบเป็นสองลอย นี่เป็นเพราะสำหรับเลขทศนิยมหนึ่งตัวมีการแทนค่าสตริงจำนวนมากซึ่งแตกต่างกันเมื่อเปรียบเทียบกับสตริง (เช่น "25"! = "25.0"! = "25.00" เป็นต้น)


ฉันต้องนำเข้าบางสิ่งเพื่อให้ทำงานได้หรือไม่ ฉันได้รับชนิด undefied 'ลอย' (ฉันอยู่ในสภาพแวดล้อมที่แปลกจาวาสคริปต์ 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());
    }
  }
}

พบได้ที่นี่


ขอบคุณ - ช่วยฉันต้องการ catch นิดหน่อย;)
Hein du Plessis

4

ฉันเชื่อว่ารหัสต่อไปนี้จะช่วย:

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

2

นี่เป็นคำตอบที่เป็นไปได้ซึ่งจะให้ข้อมูลที่แม่นยำเพียงแค่ต้องเปลี่ยนจุดทศนิยมในแบบฟอร์มที่ต้องการ

คลาสสาธารณะ TestStandAlone {

    / **
     * * * * 

วิธีนี้เป็นหลัก

* @param ถือเป็นโมฆะ * / โมฆะคงที่สาธารณะหลัก (String [] args) { // TODO stub วิธีการที่สร้างขึ้นอัตโนมัติ ลอง { ลอย f1 = 152.32f; BigDecimal roundfinalPrice = BigDecimal ใหม่ (f1.floatValue ()). setScale (2, BigDecimal.ROUND_HALF_UP); System.out.println ("f1 ->" + f1); String s1 = roundfinalPrice.toPlainString (); System.out.println ("s1" + s1); } catch (ข้อยกเว้น e) { // TODO บล็อกการจับที่สร้างขึ้นอัตโนมัติ 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+"";

คำพูดที่ว่างเปล่าเพิ่มสตริง null ให้กับตัวแปร str upcasting '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 (ฉ)
  3. String.valueOf (ฉ)

มีสองวิธีในการแปลงสตริงให้เป็นแบบลอย

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

}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.