Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955

    [AS3] - Conversione String to Number che diventa int

    Ciao ho questo problema, non so se qualcun altro si è già imbattuto.

    Ho una variabile stringa che contiene il seguente valore: 3.00

    Provo a castare questa variabile in un Number ma mi viene riconosciuto come int.

    Di conseguenza, quando da Flex vado a passare il valore in Java tramite BlazeDS anche se la proprietà è di classe Double, il valore viene considerato come Integer.

    Le prove che ho fatto sono le seguenti:

    codice:
    var x:String = "3.00";
    var numero:Number = Number(x); // numero vale 3 (senza .00)
    var numero:Number = parseFloat(x); // numero vale 3 (senza .00)
    
    mi sono anche implementato un metodo che divide e moltiplica per un valore.
    Ringrazio chiunque possa aiutarmi

  2. #2
    Da quello che vedo parseFloat() fa il suo lavoro. Si tratta del numero che hai preso in esame a darti una risposta che può essere fraintesa. Per il linguaggio di programmazione 3.00 equivale a 3. In pratica, vengono tolti i due zeri dopo il punto, perché per il linguaggio non hanno senso.

    Infatti, se provi questo codice:

    codice:
    var s:String = "3.15";
    var n:Number=parseFloat(s);
    trace(n);
    ottieni come risultato 3.15.

    Se per motivi grafici, per esempio se si tratta di un orologio, vuoi far vedere la parte con ".00" devi ragionare la contrario. In altre parole quello che devi far vedere all'utente finale la stringa "3.00".

  3. #3
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Originariamente inviato da Darkseid
    Da quello che vedo parseFloat() fa il suo lavoro. Si tratta del numero che hai preso in esame a darti una risposta che può essere fraintesa. Per il linguaggio di programmazione 3.00 equivale a 3. In pratica, vengono tolti i due zeri dopo il punto, perché per il linguaggio non hanno senso.

    Infatti, se provi questo codice:

    codice:
    var s:String = "3.15";
    var n:Number=parseFloat(s);
    trace(n);
    ottieni come risultato 3.15.

    Se per motivi grafici, per esempio se si tratta di un orologio, vuoi far vedere la parte con ".00" devi ragionare la contrario. In altre parole quello che devi far vedere all'utente finale la stringa "3.00".
    No, forse non mi sono spiegato bene.

    Se tu hai:

    codice:
    var s:String = "3.00";
    var n:Number=parseFloat(s);
    trace(n);
    n viene considerato Integer nonostante sia un Number e quindi quando lo passo a back end tramite Blaze DS nonostante la proprietà sia Double viene considerato Integer.

  4. #4
    Premetto che non ho mai programmato in java, ma per me gli zeri restano al centro del problema. Da quello che so la actionscript virtual machine2 fa delle approssimazioni. Ad sempio, se provi con is:

    codice:
    var s:String="12.00";
    var n1:Number=Number(s); 
    trace(n1, n1 is int, n1 is Number); // ottieni --> 12 true true
    vengono considerate vere entrambe le condizioni. Per la avm2 la variabile viene letta sia come int che come Number.

    Viceversa con un numero diverso:

    codice:
    var s:String="12.11";
    var n1:Number=Number(s); 
    trace(n1, n1 is int, n1 is Number); // --> 12.11 false true
    la variabile viene considerata un Number.
    Forse potresti provare a risolvere il problema in java. Ammesso che si possa fare (ripeto io mastico solo as3, php e javascript).

  5. #5
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Rimane per me incomprensibile il motivo per cui si debba creare una variabile stringa se serve un numero.


  6. #6
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Originariamente inviato da Sleter
    Rimane per me incomprensibile il motivo per cui si debba creare una variabile stringa se serve un numero.

    Perchè voglio usare un TextInput in luogo del NumericStepper. E il Text Input non ammette valori numerici ma solo stringhe.

  7. #7
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Codice PHP:
    var numero:Number 4.00;
    trace(numero.toFixed(2)); // 4.00

    testo.text numero.toFixed(2); 
    Il metodo toFixed restituisce il Number in formato String.

    ciao

  8. #8
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Originariamente inviato da Sleter
    Codice PHP:
    var numero:Number 4.00;
    trace(numero.toFixed(2)); // 4.00

    testo.text numero.toFixed(2); 
    Il metodo toFixed restituisce il Number in formato String.

    ciao
    Ciao,
    si però quando interagisci con la textinput cambiando il valore, stai comunque modificando in quel momento una stringa che devi riconvertire in Number, è qui che si verifica il problema

  9. #9
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Ciao

    Con toFixed non si converte il numero in stringa ma in un campo di testo, viene utilizzato come se lo fosse.
    In seguito, puoi comunque effettuare calcoli su quella variabile Number.

    Codice PHP:
    var numero:Number 4.00
    trace(numero.toFixed(2)); // 4.00
    trace(numero); // 4

    testo.text numero.toFixed(2); // Visualizza 4.00 

    numero += 0.05

    trace
    (numero.toFixed(2)) // 4.05
    trace(numero// 4.05 

    testo.text numero.toFixed(2); // Visualizza 4.05
    testo.text "" numero// Visualizza 4.05 

  10. #10
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Ciao

    Ho fatto delle prove con campi di testo input valorizzati in runtime e in questo modo ottengo il risultato corretto con la visualizzazione dei 2 valori (anche se 2 zero) dopo il punto:

    Codice PHP:
    var stringa_1:Number;
    var 
    stringa_2:Number;
    var 
    totale:Number;

    invia.addEventListener(MouseEvent.CLICKcalcola)

    function 
    calcola(evento:MouseEvent):void
    {
        
    stringa_1 Number(testoInput_1.text)
        
    stringa_2 Number(testoInput_2.text)
        
        
    totale stringa_1.valueOf() + stringa_2.valueOf()
        
        
    testoDin.text totale.toFixed(2

    In pratica tutte le variabili sono numeriche.
    Ho sullo stage 2 campi di testo Input che ricevono il valore String inserito dall'utente e nella funzione "calcola" chiamata da un pulsante (invia) lo assegno forzatamente alle 2 variabili numeriche.
    Una terza variabile numerica viene poi valorizzata con il metodo valueOf che dalla stringa restituisce il valore numerico.
    Alla fine viene stampata in un testo dinamico la somma delle 2 stringhe e con il metodo toFixed si aggiungono gli eventuali numeri dopo il punto anche se si tratta di 2 zeri.


    ciao

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.