Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di nourdine
    Registrato dal
    Nov 2005
    Messaggi
    1,130

    casting numerico (voglio uno zero dopo la virgola)

    halo

    ho un problema grandiiiiiiiiiiiiiiisssimo

    devo castare a numero la seguente string "123." e voglio ottenere 123.0

    se faccio:

    codice:
    Number("123.")
    js mi sega via il decimale. il che e' sensato in generale ma non nel mio caso ... non vado nei dettagli: non ha senso.

    ce un modo per ottenere un numero con uno 0 dopo la virgola?

    grazie

  2. #2
    guarda che dal punto di vista numerico non ha senso il .0, perché significa che non c'è decimale.

    Quello di cui tu hai bisogno è una stringa formattata, che rappresenti un numero.

    codice:
    function getStringParsed(num)
    {
       num = num + "";
       var pos = num.indexOf("\.");
       //C'è già il . nel numero
       if(pos >= 0)
       {
          //Metticaso che sia un numero del tipo 123. aggiungi lo 0 in fondo (non credo capiti mai, ma sempre meglio controllare)
          if(pos == num.length - 1)
             return num+"0";
          //Caso contrario è già un numero decimale
          else 
             return num; 
       }
       //Altrimenti NON è un numero con il .
       else
            return num+".0";
    }
    di basta chiamare:

    document.write(getStringParsed(123));

    Ed ottieni stampato

    123.0
    I DON'T Double Click!

  3. #3
    Utente di HTML.it L'avatar di nourdine
    Registrato dal
    Nov 2005
    Messaggi
    1,130
    Originariamente inviato da artorius
    Quello di cui tu hai bisogno è una stringa formattata, che rappresenti un numero.
    ah si?

    i bad religion cantavano:

    everybody knows what's best for you,
    everybody knows what's best for you,
    everybody knows what's best for you,
    everybody knows what's best for you!!!!!!!!!!!!!!


    amore mio ... ad un certo punto in una libreria per validare input a typing-time un metodo si prende la responsabilita' di passare dal mondo delle stringhe (giocattolo) al mondo dei numeri (che e' quello cui cui lavoro) e dice ai metodi precedenti (schiavi): "descansatevi nigni che continuo io"

    a quel punto Number converte 1.0, 345.0, 1.0000000000000000000000000000000000 e simili nella sola parte intera. questo non mi sfagiola perche' benche in matematica 1.0 ====== 1 nella testa di un utente 1.0 e' 1.0 e basta e rappresenta l'intenzione "decimale" del suddetto utente il quale va appunto bloccato dalla libreria di cui sopra.

    ora ... siccome non voglio tornare al mondo giocattolo delle stringhe come un ping pong del c*z*o mi chiedevo se ce modo di forzare il primo decimale a zero restando nel dominio dei numeri!

    sotto un'altro per favore!

  4. #4
    Scusa tanto, se ti ho beccato in un momento di stress acuto.

    Comunque, prova usando parseFloat(), in questo modo forzi l'interprete a trattare il numero come float, quindi con decimanle, anche se 0.

    Il problema è che non so se cambia qualcosa, anche perché non ho ben capito il motivo per il quale ti serve un numero del tipo 123.0 e non 123, se non per visualizzazione.
    I DON'T Double Click!

  5. #5
    Utente di HTML.it L'avatar di nourdine
    Registrato dal
    Nov 2005
    Messaggi
    1,130
    ma sto scherzando ... ti rangrazio lo stesso ;-) ... il parseFloat l'avevo provato ma niente!

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Perdona la curiosita'.... ma tu come fai ad accorgerti che non c'e' uno zero dopo il punto decimale? :master:

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  7. #7
    Utente di HTML.it L'avatar di nourdine
    Registrato dal
    Nov 2005
    Messaggi
    1,130
    nella fase pre numerica del porcesso. i dati arriavano da un form quindi ce necessariamente una fase in cui i dati sono stringa

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da nourdine
    nella fase pre numerica del porcesso. i dati arriavano da un form quindi ce necessariamente una fase in cui i dati sono stringa
    Ah, ecco
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  9. #9
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    mmhh. caruccia la sfida

    proviamoci

    codice:
    <script>
    function decimalNumber(myNumber)
      {
      return (parseFloat(myNumber)-parseInt(myNumber) == 0)?myNumber+'.0':myNumber;
      }
    
    alert( decimalNumber(100) )
    alert( decimalNumber(100.) )
    alert( decimalNumber(100.54) )
    </script>
    ovviamente il numero deve essere passato COME NUMERO (senza apici)
    sarà o non sarà??
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  10. #10
    non vorrei dire... ma sempre stringa è.

    Il punto è che non credo che JS possa essere forzato a trattare il numero come float o double, come in Java, e quindi ad usare la virgola.

    Temo che il tipo numerico di JS si controlli lui se c'è la virgola o no e la metta solo in quel caso.
    I DON'T Double Click!

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.