Come faccio a testare un valore float verificando che non ci siano caratteri strani ?
Grazie
Come faccio a testare un valore float verificando che non ci siano caratteri strani ?
Grazie
Suppongo il float arrivo sottoformato di testo (String): allora, API alla mano:
parseFloat
se solleva eccezioni allora non era in formato valido.
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"
Purtroppo io mi ritrovo il valore in esempio 12334e+566 nal campo float e che devo testare !
per questo chiedevo come potevo fare-
Quindi va bene come mi hai prospettato ? gurdando questo link però :
http://www.webfract.it/MATJAVA/functGlob3.htm
nel primo esempio di parsefloat(stringa) e nel caso prospettato uguale al mio,
comunque restituisce un numero; ma solleva in questo caso comunque un'eccezione come tu dici ?
Grazie
Saluti
a fare una prova non morivi mica:
il secondo lo gestisce (è nel range ammesso dei float), il primo - commentato - non lo gestisce, ovvero non solleva alcuna eccezione, ma lo parsa come Infinity.codice:public static void main (String[] args) { //String bigOne = "12334e+566"; String bigOne = "1e+36"; try { float f = Float.parseFloat(bigOne); System.out.println(f); } catch (Exception e) { e.printStackTrace(); } }
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"
Grazie gentilissimo e scusa il disturbo !
![]()
Ciao scusa
ho in problema in questo caso, che il valore float già in se per se contiene un dato sporco
in pratica float var contiene (valore sporco) 12344+e121 e non è stringa
Quindi nel caso tuo prospettato, pressuppone un valore stringa.
Cosa devo fare per testarlo, passarlo prima a stringa e poi fare il test che mi hai consigliato ?
Grazie
scusa ma come fai ad avere in float quel valore: semplicemente in un float non ci sta. O hai Infinity oppure qualcosaltro che non è float.
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"
hai ragione ! eppure è così perchè ho fatto una System.out.println per intercettarlo perciò dicevo che era sporco, in questo caso come risolvo ? Se voglio testare infinity ?Originariamente inviato da Andrea1979
scusa ma come fai ad avere in float quel valore: semplicemente in un float non ci sta. O hai Infinity oppure qualcosaltro che non è float.
io ho fatto in questo modo come mi hai suggerito ma non ha funzionato nel senso che Exception e non la esegue (appena provato - nfloat è di tipo float) :
codice:String valString = String.valueOf(nfloat); try { float f = Float.parseFloat(valString); } catch (Exception e) { nfloat = 0; System.out.println("Valore a zero"); } return nfloat;
posta tutto, così non dice niente. E poi non viene sollevata alcuna eccezione perché il formato è valido. Ti verrebbe sollevata un'eccezione (NumberFormatException) solo se il formato numerico non fosse valido, per intenderci, se provassi a parsare qualcosa tipo "123.56Andrea"
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"
In fatti io mi ritrovo il valore 9.459787E-38 e qualche altro caso; quindi io devo discriminare il valore corretto per intenderci
Come faccio ?