Chuyển đổi số thực (float) sang nhị phân (Binary) trong java

Hi mọi người,
Hiện tại mình đang vướng mắc ở phần chuyển đổi số lẻ của số thực. Mình muốn chuyển 0.625 thành nhị phân là 0.101. Nhưng khi mình chạy đoạn code của mình thì nó không ra như mình mong đợi

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.print("Nhap vao mot so thuc ");
    String tp = input.nextLine();
    String str1 = "", str2 = "";

    //cắt số thực thành 2 phần
    String [] ss = new String[2];
    ss = tp.split("\\.");
    int fStr1 = Integer.parseInt(ss[0]);        
    float fStr2 = Float.parseFloat("0."+ss[1]);
   
    //cắt phần nguyên
    while (fStr1>0)
    {
        if (fStr1%2 == 0)
              str1 = "0" + str1;
        else
              str1 = "1" + str1;
        fStr1 = fStr1/2;
    } 

    //cắt phần lẻ
    while (fStr2 > 0)
    {
        float r = fStr2*2;
        if (r >= 1)
        {
            str2 = str2 + "1";
            fStr2 = r - 1;
        }
        else 
        {    
            str2 = str2 + "0";
            fStr2 = r;
        }
    }
   System.out.println("So nhi phan la " +str1 +"."+str2 );        
}

Xin cho hỏi đoạn code mình sai chỗ nào mà không thể in ra được. (Dù debug không phát hiện ra lỗi)
Thanks mọi người đã giúp đỡ

Nó in ra .101 đúng không?
Tại dòng trên.

6 Likes

Mình đã xử lý được, cảm ơn mọi người đã quan tâm và giúp đỡ

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?