01/10/2018, 11:04

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 đỡ

*grab popcorn* viết 13:09 ngày 01/10/2018

while (fStr1>0)

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

Le Hoang Quan viết 13:16 ngày 01/10/2018

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

Bài liên quan
0