Aggiungere zeri a destra

di il
21 risposte

21 Risposte - Pagina 2

  • Re: Aggiungere zeri a destra

    Però se scrivo questo:
    NumberFormat format = NumberFormat.getInstance();
                        Number number = format.parse(pStr);
                        p = number.doubleValue();
    e digito 123.45 nel form il programma smette di funzionare.
    Penso che sarebbe più prudente realizzare un form che sia in grado di accettare sia numeri con la virgola che con il punto.
    Tu che dici?
  • Re: Aggiungere zeri a destra

    giannino1995 ha scritto:


    NumberFormat format = NumberFormat.getInstance();
                        Number number = format.parse(pStr);
                        p = number.doubleValue();
    e digito 123.45 nel form il programma smette di funzionare.
    Se hai il Locale predefinito "italiano" no, di per sé NON causa eccezioni. Ma ... dà il risultato sbagliato. Perché in italiano il "." (punto) è il separatore delle migliaia, quindi "123.45" in italiano viene interpretato come 12345 (dodici mila trecento quaranta cinque ! ).

    giannino1995 ha scritto:


    Penso che sarebbe più prudente realizzare un form che sia in grado di accettare sia numeri con la virgola che con il punto.
    "potrebbe" ... ma è da valutare. E comunque solo a patto di disabilitare/ignorare qualunque questione sui separatori delle migliaia. Perché se contempli pure questi ... diventa un casino!


    Ma poi:

    a) mi sono lasciato un po' trascinare dalle discussioni su locale di default, italiano vs inglese ecc... e mi sono dimenticato di una questione importante: tu tutto questo lo stai vedendo per una web application, giusto? (NON una applicazione console/desktop).

    E se sì, pensa un po' ... quale Locale è più giusto usare secondo te? Quello predefinito della macchina (che è il server!! che gli utenti magari non sanno neanche dove/come sia?)

    e inoltre

    b) ammesso che vuoi continuare con formattazione/parsing tramite i NumberFormat, cosa fa il programmatore "furbo" che sa programmare ad oggetti?
  • Re: Aggiungere zeri a destra

    Se ragiono con numberformat, locale e non locale il programma si complica ulteriormente e diventa ingestibile...
    Per risolvere ho creato 2 metodi di questo tipo e buona notte al secchio:
    
        public String FromDoubleToString(Double doubleValue, String formatString){
            try {
                return String.format(formatString, doubleValue).replace(",",".");
            }catch(Exception e){
                return null;
            }
    
        }
    
        public Double FromStringToDouble(String Str){
            try {
                return Double.parseDouble(Str.replace(",","."));
            }catch(Exception e){
                return null;
            }
    
        }
  • Re: Aggiungere zeri a destra

    giannino1995 ha scritto:


    Per risolvere ho creato 2 metodi di questo tipo e buona notte al secchio:
    Va beh ... nessun problema ... "capisco". Ma dovresti comprendere poi (meglio il prima possibile) anche questi aspetti sui Locale, NumberFormat e altro, perché fanno parte del framework "base" in Java SE. Vengono molto "prima" di mille altre cose.

    Comunque ............ un piccolo indizio te lo lascio. Se si vuole rispettare la preferenza dell'utente con il bel browser di sua scelta, è sufficiente usare il Locale getLocale() di ServletRequest.
    Ogni volta che un browser fa una request, invia anche un header particolare chiamato "Accept-language", del tipo es. (dal mio Firefox):

    Accept-language: it,en-US;q=0.7,en;q=0.3

    Ovvero, tradotto a parole, il browser chiede al server: dammi l'italiano se ce l'hai. Se non ce l'hai mi va bene l'inglese americano (en-US) perché ha il q ("quality") di 0.7 (se non c'è un q, vale 1.0, il massimo) ovvero un po' meno preferibile. Se non hai neanche questo, allora accetto l'inglese generico (en) che ha q ancora più basso.

    Questo ordine di preferenza lo puoi impostare nei settings di tutti i browser (ovviamente non in quella forma, ma più comodo, cioè "graficamente" con una lista in cui aggiungi/rimuovi/sposti le lingue). Il getLocale() semplicemente ti dà il Locale che è il più "preferito" dall'utente con quel browser.
  • Re: Aggiungere zeri a destra

    Se mi illustri il codice cerco di comprenderlo. Online trovo del materiale:
    https://stackoverflow.com/questions/19438769/httpservletrequest-getlocale-returns-os-locale-not-browser-locale
    Prima però mi devi dire una cosa. Con la tua modifica alle mie funzioni FromStringToDouble() e FromDoubleToString() ho lo stesso grado di robustezza della piattaforma?
    Posso continuare su qualunque browser (americano, italiano, olandese, cinese, ecc...) a scrivere numeri con qualunque separatore (virgola o punto) senza mandare in eccezione il programma?
    Nella tabella riassuntiva dove raccolgo tutti gli inserimenti dell’utente i numeri sarebbero scritti con la virgola oppure con il punto?
    A presto e grazie per la dritta
  • Re: Aggiungere zeri a destra

    giannino1995 ha scritto:


    Con la tua modifica alle mie funzioni FromStringToDouble() e FromDoubleToString() ho lo stesso grado di robustezza della piattaforma?
    Sì, e per il parsing con NumberFormat se vuoi farlo "stretto" come dicevo prima, serve anche l'uso del ParsePosition (non ti sarà chiaro adesso .. ok no prob.).

    giannino1995 ha scritto:


    Posso continuare su qualunque browser (americano, italiano, olandese, cinese, ecc...) a scrivere numeri con qualunque separatore (virgola o punto) senza mandare in eccezione il programma?
    Sì, comunque come ho detto prima, non è tanto il browser in sé ma le impostazioni che ha fatto l'utente nel browser. Nel mio Firefox (vedi Accept-language descritto prima) sono stato io a mettere l'italiano in "alto" (più preferibile) rispetto al resto. E' quello che conta.

    giannino1995 ha scritto:


    Nella tabella riassuntiva dove raccolgo tutti gli inserimenti dell’utente i numeri sarebbero scritti con la virgola oppure con il punto?
    Dipenderà dal Locale selezionato ... non so a memoria come funzionano tutte le localizzazioni del mondo ...
  • Re: Aggiungere zeri a destra

    Ritornerò su questo punto quando avrò terminato l'esercitazione, al momento ho altri problemi più gravi.

    Grazie
Devi accedere o registrarti per scrivere nel forum
21 risposte