hallo leute...
ich wollte mir ein kleines java programm schreiben welches mir fließkommazahlen die mit einer 0 beginnen (also 0,1234....) in binär umwandeln...
also für 0,75 soll es mir einfach sagen 0,11
das funktioniert auch alles wunderbar ist ja kein großer akt, doch als ich das dann mit 0,67 machen wollte ist mir was komisches aufgefallen bei der multiplikation mit 2, es entstehen komische nachkomma stellen...
hier die ausgabe:
hier der code...
ich wollte mir ein kleines java programm schreiben welches mir fließkommazahlen die mit einer 0 beginnen (also 0,1234....) in binär umwandeln...
also für 0,75 soll es mir einfach sagen 0,11
das funktioniert auch alles wunderbar ist ja kein großer akt, doch als ich das dann mit 0,67 machen wollte ist mir was komisches aufgefallen bei der multiplikation mit 2, es entstehen komische nachkomma stellen...
hier die ausgabe:
Code:
1) 0.67 * 2 = 1.34 | 1
2) 0.34000003 * 2 = 0.68000007 | 0
3) 0.68000007 * 2 = 1.3600001 | 1
4) 0.36000013 * 2 = 0.72000027 | 0
5) 0.72000027 * 2 = 1.4400005 | 1
6) 0.44000053 * 2 = 0.88000107 | 0
7) 0.88000107 * 2 = 1.7600021 | 1
8) 0.76000214 * 2 = 1.5200043 | 1
9) 0.5200043 * 2 = 1.0400085 | 1
10) 0.040008545 * 2 = 0.08001709 | 0
11) 0.08001709 * 2 = 0.16003418 | 0
12) 0.16003418 * 2 = 0.32006836 | 0
13) 0.32006836 * 2 = 0.6401367 | 0
14) 0.6401367 * 2 = 1.2802734 | 1
15) 0.28027344 * 2 = 0.5605469 | 0
16) 0.5605469 * 2 = 1.1210938 | 1
17) 0.12109375 * 2 = 0.2421875 | 0
18) 0.2421875 * 2 = 0.484375 | 0
19) 0.484375 * 2 = 0.96875 | 0
20) 0.96875 * 2 = 1.9375 | 1
21) 0.9375 * 2 = 1.875 | 1
22) 0.875 * 2 = 1.75 | 1
23) 0.75 * 2 = 1.5 | 1
24) 0.5 * 2 = 1.0 | 1
BUILD SUCCESSFUL (total time: 0 seconds)
hier der code...
Java:
package prototype;
public class Main {
public static void main(String[] args) {
float f = 0.67f;
int i = 1;
while (f != 0) {
System.out.print(i + ") " + f + " * 2 = " + (f = f * 2));
if (f >= 1) {
System.out.println(" | 1");
f = f % 1;
} else {
System.out.println(" | 0");
}
i++;
}
}
}