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 đỡ
Bài liên quan
Nó in ra .101 đúng không?
Tại dòng trên.
Mình đã xử lý được, cảm ơn mọi người đã quan tâm và giúp đỡ