Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto
Pensato per il professionista sempre in movimento, HP Elitebook Ultra G1i 14 abbina una piattaforma Intel Core Ultra 7 ad una costruzione robusta, riuscendo a mantenere un peso contenuto e una facile trasportabilità. Ottime prestazioni per gli ambiti di produttività personale con un'autonomia lontano dalla presa di corrente che permette di lavorare per tutta la giornata
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso
Basato su piattaforma Qualcomm Snapdragon X Plus a 8 core, il nuovo Microsoft Surface Pro 12 è un notebook 2 in 1 molto compatto che punta sulla facilità di trasporto, sulla flessibilità d'uso nelle differenti configurazioni, sul funzionamento senza ventola e sull'ampia autonomia lontano dalla presa di corrente
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet!
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet!
Il REDMAGIC Astra Gaming Tablet rappresenta una rivoluzione nel gaming portatile, combinando un display OLED da 9,06 pollici a 165Hz con il potente Snapdragon 8 Elite e un innovativo sistema di raffreddamento Liquid Metal 2.0 in un form factor compatto da 370 grammi. Si posiziona come il tablet gaming più completo della categoria, offrendo un'esperienza di gioco senza compromessi in mobilità.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-05-2010, 20:29   #1
maro89
Junior Member
 
Iscritto dal: May 2010
Messaggi: 25
[java]tipi primitivi

Salve ragazzi,

chiedo a voi per non aspettare di chiedere al mio professore universitario e poi so che voi mi dareste una risposta migliore e più articolata =).

ho sviluppato un piccola applicazione in java con un interfaccia grafica molto semplice (qualche jtextfield e un jbutton) che svolge una funzione di elaborazione di dati matematici per restituirne degli altri.

dato che molti metodi implementati usano funzioni trigonometriche ho dei risultati con molti numeri dopo la virgola.
Come faccio a restringere il numero di decimali dopo la virgola?tipo a 3 o 4

Grazie per il vostro aiuto!
maro89 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2010, 21:07   #2
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Puoi usare la System.out.printf. Guarda queste due prove:

Codice:
float f = 21.4563f;
System.out.printf("21.4563 diventa: %.2f", f);
output: 21.4563 diventa: 21,46

Codice:
float f = 21.4563f;		
System.out.printf("21.4563 diventa: %.1f", f);
output: 21.4563 diventa: 21,5

EDIT: scusa mi sono accorto dopo che non hai specificato in fase di stampa e che inoltre usi un'interfaccia a finestre

Ultima modifica di ndakota : 28-05-2010 alle 21:24.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2010, 22:06   #3
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
Ti basta moltiplicare (castizzando a int) e dividere (ritornando a double) il numero per (10^n) dove n è il numero di cifra da lasciare dopo la virgola.
Alternativamente, per evitare eventuali perdite di dati dovuti a possibili narrow, puoi utilizzare il metodo statico format di String, con le stesse modalità indicateti nel post precedente.

Ultima modifica di nuovoUtente86 : 28-05-2010 alle 22:23.
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 30-05-2010, 18:49   #4
maro89
Junior Member
 
Iscritto dal: May 2010
Messaggi: 25
Quote:
Originariamente inviato da nuovoUtente86 Guarda i messaggi
Ti basta moltiplicare (castizzando a int) e dividere (ritornando a double) il numero per (10^n) dove n è il numero di cifra da lasciare dopo la virgola.
Alternativamente, per evitare eventuali perdite di dati dovuti a possibili narrow, puoi utilizzare il metodo statico format di String, con le stesse modalità indicateti nel post precedente.
risolto come hai detto tu grazie.

in pratica ho fatto

double pippo=7.9999999999
pippo=pippo*100; //pippo=799.9999
pippo=(int)pippo; //pippo=799
pippo=(double)pippo*100 //pippo=7.99
maro89 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2010, 00:10   #5
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Quote:
(castizzando a int)
Quote:
(ritornando a double)
Uccidetemi, qui e subito, che il mio corpo giaccia a fianco del cadavere dell'italiano.

Possano i Lancieri dell'Accademia della Crusca fare scempio di coloro che perpetrarono il putribondo assassinio.

Addio!
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2010, 08:19   #6
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Be', a me "ritornando a double" ha fatto sorridere quando l'ho letta, suonava un po' come il titolo di un nuovo film (sulla falsa riga di "Ritorno al futuro")

Condivido invece il "disgusto" nei confronti del verbo "castizzare"...
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2010, 10:47   #7
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
Probabilmente sarebbe stato più freddo ed elegante scrivere 3 righe di codice, ma la persona avrebbe fatto, probabilmente, un "copia e incolla" poco significativo, senza realmente cogliere il senso di quelle istruzioni.
Ancora avrei potuto indicargli di fare una "conversione esplicita dal tipo double al tipo int", ma ne sarebbe risultata una frase stilisticamente impeccabile ma parimenti inefficace ai fini della discussione.
Del resto credo questo sia una sezione del forum dove si tratta di programmazione e non la purezza della lingua italiana.
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2010, 10:59   #8
maro89
Junior Member
 
Iscritto dal: May 2010
Messaggi: 25
Quote:
Originariamente inviato da nuovoUtente86 Guarda i messaggi
Probabilmente sarebbe stato più freddo ed elegante scrivere 3 righe di codice, ma la persona avrebbe fatto, probabilmente, un "copia e incolla" poco significativo, senza realmente cogliere il senso di quelle istruzioni.
Ancora avrei potuto indicargli di fare una "conversione esplicita dal tipo double al tipo int", ma ne sarebbe risultata una frase stilisticamente impeccabile ma parimenti inefficace ai fini della discussione.
Del resto credo questo sia una sezione del forum dove si tratta di programmazione e non la purezza della lingua italiana.
Hai perfettamente ragione.

Ci ho messo un po a capire cosa dovessi fare ma almeno ho capito e molto probabilmente se mi avessi messo 3 righe di codice le avrei copiate!

Comunque meglio un italiano storto che si capisca cosa bisogni fare che un italiano perfetto incompressibile dal punto di vista della programmazione.
maro89 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2010, 11:43   #9
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
@nuovoUtente86: mea culpa, avrei dovuto specificarlo in calce al post, ma si faceva solo un po' di facile ironia, tanto per sorridere un po'; questo senza voler togliere nulla alla bontà & utilità del tuo intervento nei confronti dell'utente.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2010, 11:56   #10
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
Ci mancherebbe, l' ironia ci deve essere e va benissimo. Va però anche detto che, spesso, risulta più utile l' utilizzo di termini tecnici storpiati nella nostra lingua, ma di utilizzo tecnico diffuso, piuttosto che parole fedelmente tradotte ma dalla scarsa contestualizzazione informatica.
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2010, 12:41   #11
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Dai, su, non nascondiamoci dietro a un dito. L'aulico non interessa a nessuno ma che almeno sembri italiano!

Uno può usare termini stranieri in una frase, c'è una regola ad hoc secondo cui quei la parola o il verbo non devono essere declinati o coniugati.

Non dobbiamo necessariamente usare il termine "conversione" (sebbene non sia poi così male, sopratutto se consideriamo i termini "faldone" o "direttorio"). Puoi quindi "fare un cast a double" o fare "dei cast a double" (ma non dei casts).

Non possiamo inventarci delle parole - salvo certe figure metaforiche - ed è facile capire il perchè: la soluzione proposta è a rischio di rounderrorizzazione e quindi non può essere usata nei casi in cui la decimalificazione del flottante produca un valore non boundato.

Cosa si capisce? Si capisce che devo prenotare una visita dal logopedista.

Circa il "ritornare" è un fatto che i verbi di moto siano intransitivi: non ci si può fare molto. Intransitivi significa che non hanno la capacità di trasferire un significato ad un oggetto. Per i verbi di moto l'oggetto è un luogo.

Il caso del "ritornare a double" è particolare. L'essere intrasitivo comporta la necessità che esista una particella tra verbo ed oggetto. La particella c'è (a) ma l'oggetto non è un luogo.

Potremmo dire "ritornare a double" se "double" fosse l'argomento di un discorso, da intendersi come luogo figurato. "... e ritorniamo al [problema del/discorso del] double".

Per un programmatore tutto questo dovrebbe essere affascinante: è una delle tante grammatiche da conoscere.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2010, 21:01   #12
maro89
Junior Member
 
Iscritto dal: May 2010
Messaggi: 25
anche se non è in argomento con il titolo ne con la discussione che si è venuta a creare sul linguaggio italiano-programmazione ve lo chiedo qui per evitare di aprire un altro topic

ho creato un jdialog e ho inserito un jbutton il quale in teoria dovrebbe chiudere la finestra senza dover andare a cliccare il tastino x in alto.

nel codice ho provato le seguenti implementazioni:

Codice:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
 }
con il codice implementato sopra il jbutton non fa niente e quindi la jdialog non si chiude

Codice:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        System.exit(0);
 }
con il codice implementato sopra il jbutton mi chiude tutto il programma e non solo la jdialog ma proprio tutto.

ho provato a cercare altre soluzioni ma non le ho trovate

ora mi resta sperare che qualcuno di voi mi possa dare una mano per risolvere questo problema

grazie
maro89 è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2010, 08:57   #13
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da maro89 Guarda i messaggi
ho creato un jdialog e ho inserito un jbutton il quale in teoria dovrebbe chiudere la finestra senza dover andare a cliccare il tastino x in alto.

nel codice ho provato le seguenti implementazioni:
Codice:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
 }
Il metodo setDefaultCloseOperation serve appunto per determinare il comportamento standard di chiusura che la dialog terrà quando viene generato e processato il WindowEvent caraterrizzato dall' ID noto come WINDOW_CLOSING.
Direttamente dai javadoc di JDialog:
Quote:
Sets the operation that will happen by default when the user initiates a "close" on this dialog. You must specify one of the following choices:

* DO_NOTHING_ON_CLOSE (defined in WindowConstants): Don't do anything; require the program to handle the operation in the windowClosing method of a registered WindowListener object.
* HIDE_ON_CLOSE (defined in WindowConstants): Automatically hide the dialog after invoking any registered WindowListener objects.
* DISPOSE_ON_CLOSE (defined in WindowConstants): Automatically hide and dispose the dialog after invoking any registered WindowListener objects.

The value is set to HIDE_ON_CLOSE by default

Quote:
con il codice implementato sopra il jbutton non fa niente e quindi la jdialog non si chiude
Il motivo dovrebbe ora esserti chiaro: con il codice sopra non comandi alla dialog di chiudersi, le dici invece che comportamento dovrà tenere quando dovrà chiudersi.

Quote:
Codice:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        System.exit(0);
 }
con il codice implementato sopra il jbutton mi chiude tutto il programma e non solo la jdialog ma proprio tutto.
Questo perchè la chiamata a System.exit() "uccide" la virtual machine.
Anche di questo si trova traccia nei javadoc.

Ora, ci sono diversi modi per impostare un bottone che deve chiudere la finestra in cui risiede.
Presumendo che 'dialog' sia l'istanza della tua JDialog e che 'btClose' sia l'istanza del JButton contenuto in essa, un metodo è quello di invocare setVisible(false) per nasconderla e dispose() per "distruggerla" (vengono rilasciate le risorse native neccessarie per la sua proiezione grafica):
Codice:
btClose.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        dialog.setVisible(false);
        dialog.dispose();
    }
});
Con il sistema qui sopra però forzi la "distruzione" della dialog, e non è detto che questo comportamento sia desiderabile (perchè, ad esempio, avevi impostato una diversa politica di chiusura della dialog con setDefaultCloseOperation, e vorresti che venisse rispettata anche alla pressione del tuo bottone).
Si potrebbe quindi fare in modo che alla pressione del bottone venga generato quello specifico evento che scatena la chiusura della dialog, secondo la sua specifica politica di chiusura. E' un WindowEvent caratterizzato da due oggetti: la "sorgente" dell'evento è la dialog stessa che deve chiudersi, e l'"identificatore" dell'evento è la costante WindowEvent.WINDOW_CLOSING. L'evento va generato e infilato nella coda degli eventi, in modo che venga processato appena possibile:
Codice:
btClose.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        WindowEvent closing = new WindowEvent(dialog, WindowEvent.WINDOW_CLOSING)
        dialog.dispatchEvent(closing);
    }
});
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2010, 16:23   #14
maro89
Junior Member
 
Iscritto dal: May 2010
Messaggi: 25
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Il metodo setDefaultCloseOperation serve appunto per determinare il comportamento standard di chiusura che la dialog terrà quando viene generato e processato il WindowEvent caraterrizzato dall' ID noto come WINDOW_CLOSING.
Direttamente dai javadoc di JDialog:




Il motivo dovrebbe ora esserti chiaro: con il codice sopra non comandi alla dialog di chiudersi, le dici invece che comportamento dovrà tenere quando dovrà chiudersi.


Questo perchè la chiamata a System.exit() "uccide" la virtual machine.
Anche di questo si trova traccia nei javadoc.

Ora, ci sono diversi modi per impostare un bottone che deve chiudere la finestra in cui risiede.
Presumendo che 'dialog' sia l'istanza della tua JDialog e che 'btClose' sia l'istanza del JButton contenuto in essa, un metodo è quello di invocare setVisible(false) per nasconderla e dispose() per "distruggerla" (vengono rilasciate le risorse native neccessarie per la sua proiezione grafica):
Codice:
btClose.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        dialog.setVisible(false);
        dialog.dispose();
    }
});
Con il sistema qui sopra però forzi la "distruzione" della dialog, e non è detto che questo comportamento sia desiderabile (perchè, ad esempio, avevi impostato una diversa politica di chiusura della dialog con setDefaultCloseOperation, e vorresti che venisse rispettata anche alla pressione del tuo bottone).
Si potrebbe quindi fare in modo che alla pressione del bottone venga generato quello specifico evento che scatena la chiusura della dialog, secondo la sua specifica politica di chiusura. E' un WindowEvent caratterizzato da due oggetti: la "sorgente" dell'evento è la dialog stessa che deve chiudersi, e l'"identificatore" dell'evento è la costante WindowEvent.WINDOW_CLOSING. L'evento va generato e infilato nella coda degli eventi, in modo che venga processato appena possibile:
Codice:
btClose.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        WindowEvent closing = new WindowEvent(dialog, WindowEvent.WINDOW_CLOSING)
        dialog.dispatchEvent(closing);
    }
});
Grazie, la tua esauriente spiegazione mi ha fatto reso la vita più semplice!
ero disperato non volevo togliere il pulsante che mi chiudesse la finestra ma non sapevo come riuscire a fargli chiudere la finestra.

ho cercato all'interno del javadoc ma si vede che non mi sono spinto troppo dentro da riuscire a capire il tutto

capitemi sono al primo anno di ingegneria informatica!=)
maro89 è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2010, 17:32   #15
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da maro89 Guarda i messaggi
ho cercato all'interno del javadoc ma si vede che non mi sono spinto troppo dentro da riuscire a capire il tutto
I javadoc si impara ad aprezzarli e conoscerli con il tempo, logicamente.
Però questi sono solo la documentazione delle API; forse all'inizio è più pratico documentarsi con i Sun Java Tutorial.

A questa pagina trovi il "really big index": se lo scorri rapidamente (senza farti venire la tendinite, la pagina è lunga) vedrai che contiene una bella quantità di informazioni su moltissimi aspetti della tecnologia Java: tienteli sempre sotto mano
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto HP Elitebook Ultra G1i 14 è il notebook c...
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso Microsoft Surface Pro 12 è il 2 in 1 pi&u...
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet! Recensione REDMAGIC Astra Gaming Tablet: che spe...
Dopo un mese, e 50 foto, cosa abbiamo capito della nuova Nintendo Switch 2 Dopo un mese, e 50 foto, cosa abbiamo capito del...
Gigabyte Aero X16 Copilot+ PC: tanta potenza non solo per l'IA Gigabyte Aero X16 Copilot+ PC: tanta potenza non...
Operaio folgorato da una Tesla? Tutto fa...
Meta Quest 3S crolla su Amazon: realtà v...
Windows 10, è già possibil...
Torna il mini PC da 169€ con Ryzen 5 355...
Microsoft: Windows 11 24H2 è la v...
Quale AI PC scegliere per il ritorno a s...
TV 4K Hisense a partire da 259€: modelli...
Carica di tutto, anche i MacBook, ha 7 p...
Lenovo Legion Go 2 mostrata in un video:...
iOS 26 Beta 4, torna il Liquid Glass! Ec...
Degrado batteria, ottime notizie anche p...
Un hard disk esterno Seagate da 20TB a 3...
GeForce RTX 5080, 5060 Ti e Radeon RX 90...
Sconti oggi sugli SSD Orico PCIe Gen.4 d...
Prezzo crollato per le Samsung Galaxy Bu...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 09:50.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v