warum possible loss of precision?

Status
Nicht offen für weitere Antworten.

Bobo

Mitglied
warum kommt bei diesem programm der fehler:

java:33 : possible loss of precision
found : double
required: float

x=f%(d*e);
___^

Code:
import java.io.*;
public class Zufall
	{
           public static void main (String args[])
           	throws IOException
           		{{
                                float x;
		double d, e,  g, h, f;
            		BufferedReader br = new BufferedReader(
               		new InputStreamReader(System.in));
               		System.out.println();
               		System.out.println();
               		System.out.println("Generieren eines Quadratrests mit Hilfe des 'Quadratrest-Generator'! ");
               		System.out.println("Geben Sie eine Primzahl ein");
               		d = Double.parseDouble(br.readLine());
               		System.out.println("Geben Sie eine zweite Primzahl ein!");
               		e = Double.parseDouble(br.readLine());
               		System.out.println("Geben Sie eine Zahl zwischen 2 und "+d*e+" als Startwert ein!");
               		f = Double.parseDouble(br.readLine());
               		if (f<2||f>d*e)
              	 	{
               		  System.out.println("Geben Sie eine Zahl zwischen 2und "+d*e+" als Startwert ein!");
               		  f = Double.parseDouble(br.readLine());
               		}
                	System.out.println("Geben Sie die Anzahl der Wiederholungen ein!");
               		g = Double.parseDouble(br.readLine());
               		while (g>0)
               			{
               				
               			g=g-1;
               			f=f*f;
               			x=f%(d*e);
               			}
               			System.out.println("Die generierte Zahl lautet: "+x+".");
}}}}

Edit von L-ectron-X: Was soll der Titel: "warum?"
Kein Mensch kann damit was anfangen! :?
Titel geändert.
 

mic_checker

Top Contributor
DU kannst sagen , dass das Ergebnis in float dargestellt werden soll. Damit sagst du dem Compiler "mir ist klar das ein loss of precision auftauchen kann , aber ich will es so also mach es ;)"

Code:
x=(float)(f%(d*e));

x musst du vorher noch initialisieren, sonst kommt "might not have been initialized"
 

Bobo

Mitglied
java:44: variable x might not have been initialized

System.out.println("Die generierte Zahl lautet: "+x+".");

Code:
import java.io.*;
public class Zufall

	{
           public static void main (String args[])
           throws IOException
           		
           		{{{
                    
      	    double d, e, f, g, h; 
                  	
                    BufferedReader br = new BufferedReader( 
                     new InputStreamReader(System.in)); 
                    
                     System.out.println("Generieren eines Quadratrests mit Hilfe des 'Quadratrest-Generator'! "); 
                     System.out.println("Geben Sie eine Primzahl ein"); 
                     d = Double.parseDouble(br.readLine()); 
                     System.out.println("Geben Sie eine zweite Primzahl ein!"); 
                     e = Double.parseDouble(br.readLine()); 
                     System.out.println("Geben Sie eine Zahl zwischen 2 und "+d*e+" als Startwert ein!"); 
                     f = Double.parseDouble(br.readLine()); 
                     
                     if (f<2||f>d*e) 
                     	
                     	{ 
                       		System.out.println("Geben Sie eine Zahl zwischen 2 und "+d*e+" als Startwert ein!"); 
                       		f = Double.parseDouble(br.readLine()); 
                     	} 
                   	 
                   	 System.out.println("Geben Sie die Anzahl der Wiederholungen ein!"); 
                     g = Double.parseDouble(br.readLine()); 
                     
                     float x;
                     
                     while (g>0) 
                        
                        {
                        	g=g-1; 
                        	f=f*f; 
                        	x=(float)(f%(d*e));
                         } 
                       
                        System.out.println("Die generierte Zahl lautet: "+x+".");	 
                      
                       
}}}

obwohl ich doch x als float initialisiert habe
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben