Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327

    Cast A Int... Non Ci Riesco!!

    Ciao ragazzi..
    Spero qualcuno mi possa aiutare, ecco il mio problema.
    Con questo codice, vorrei trasformare z in int e assegnarlo a y.
    codice:
    int y;
    double z;
    		z=Math.sin(x);
    
    		y=Math.floor(z);
    In questo modo in fase di compilazione viene fuori:
    Possible loss of precision



    Come posso risolvere?
    Grazie in anticipo

  2. #2
    nel tuo titolo la soluzione: devi fare un cast: y = (int) z;
    Ivan Venuti
    Vuoi scaricare alcuni articoli sulla programmazione, pubblicati su riviste di informatica? Visita http://ivenuti.altervista.org/articoli.htm. Se vuoi imparare JavaScript leggi il mio libro: http://www.fag.it/scheda.aspx?ID=21754 !

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327
    E allora dove sta l'errore??
    Volevo tracciare il grafico del seno..

    Ma in uscita ho soltanto una linea retta....

    codice:
    import java.awt.Graphics;
    
    import javax.swing.JPanel;
    
    
    
    public class GraficoSeno extends JPanel
    
    {
    
    	public void paintComponent(Graphics g)
    
    	{
    
    	super.paintComponent(g);
    
    	int lar= getWidth();
    
    	int alt= getHeight();
    
    	int intersezione= lar/4;
    
    	int i,x,y;
    
    	double z;
    
    	for(i=0;i<lar;i++)
    
    	{
    
    		x=i;
    
    		z=Math.sin(x);
    
    		y=(int)z;
    
    		g.drawLine(x,y+30,x,y+30);
    
    	}
    
    }
    
    }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da playbasfa
    E allora dove sta l'errore??
    Beh, Math.sin() ritorna un valore tra -1 e +1 (compresi). Quindi a meno di beccare esattamente il valore -1 o +1, facendo un cast a int hai sempre 0!!

    E comunque l'argomento di sin() sono radianti, quindi bisogna vedere con quale frequenza vuoi generare la sinusoide. Radianti vuol dire che 360° -> 2*PI radianti. Se usi numeri interi per la progressione, in 6 cicli hai quasi completato la sinusoide .... non so quanto possa venire bella .....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327
    Giusto!!!

    Ho cercato di ovviare così:

    codice:
    y=(int)z*10;
    Ma vengono fuori una serie infinita di puntini.

    Se invece aggiungo anche:
    codice:
    sin(x*2*Math.PI)
    Viene fuori la solita linea dritta..

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Prova questo (ridimensiona anche la finestra e guarda cosa succede):

    codice:
    import java.awt.*;
    import javax.swing.*;
    
    public class TestFrame extends JFrame
    {
        public TestFrame ()
        {
            super ("Test Frame");
    
            setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
            setSize (300, 300);
    
            getContentPane ().add (new SinusoidPanel ());
        }
    
        public static void main (String[] args)
        {
            SwingUtilities.invokeLater (new Runnable ()
            {
                public void run ()
                {
                    TestFrame f = new TestFrame ();
                    f.setVisible (true);
                }
            });
        }
    }
    
    class SinusoidPanel extends JPanel
    {
        public void paintComponent (Graphics g)
        {
            super.paintComponent (g);
    
            int width = getWidth ();
    	int height = getHeight ();
    	int c = height/2;
    
    	for (int x = 0; x < width; x++)
    	{
                int y = (int) (c * Math.sin (x/200.0 * 2*Math.PI));
                g.drawLine (x, c, x, c+y);
            }
        }
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327
    Grazie mille

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.