PDA

View Full Version : [JAVA] JSpinner e Double


lovaz
15-08-2007, 11:43
Sarò breve.

Ho uno spinner fatto così:
new JSpinner( new SpinnerNumberModel( 0.0, 0.0, null, 0.1 ) );

che visualizza i valori 0, 0.2, 0.3 eccetera.

Come molti sanno (?) alcuni numeri decimali non sono rappresentabili
esattamente da un calcolatore (ad esempio 0.2 in binario è periodico).

Quando vado a recuperare il valore dello spinner, per certi valori come appunto
0.2 (ma non sempre!) mi viene ritornata una stringa come 0.19999999999999998

A me basterebbe la stringa visualizzata nello spinner (0.2), quindi chiedo: c'è un modo?
Probabilmente si può anche formattare il Double successivamente,
ma al momento mi sfugge come :doh:

PGI-Bis
15-08-2007, 13:46
Crea uno SpinnerModel che usi BigDecimal come valore e sei a posto.

Altrimenti, il testo sta in un campo di testo che è parte dell'editor. Per ottenere l'editor:

JComponent c = jspinner.getEditor();

Se quel JComponent è istanza di JSpinner.DefaultEditor fai una conversione esplicita a JSpinner.DefaultEditor. Una volta converitito il valore, puoi accedere al testo con

getTextField().getText();

lovaz
15-08-2007, 13:55
Grazie mille, mi era sfuggito il metodo getTextField()

Alla prossima!