Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072

    Passaggio valore numerico

    Ciao a tutti ho una variabile del tipo

    11234.12321

    (quindi valore intero e decimali)

    da questa devo realizzare un valore numerico del tipo di 9 caratteri fissi (gli ultimi 2 caratteri rappresentano i 2 decimali)

    quindi partendo da
    1230.567 dovrei avere 000123056

    (i decimali vanno bene troncati alla seconda cifra)


    Potete aiutarmi?

    Grazie

  2. #2
    non sarà il modo migliore ma siccome sono nuovo di php sto provando a fare tutto ciò che chiedete per imparare più velocemente

    ho messo i commenti così capisci cosa ho fatto
    codice:
    <?php
    //il numero lo uso come un testo
    $a=1230.567;
    //cerco dove si trova il .
    $pos=strpos($a, ".");
    //controllo la lunghezza della stringa
    $lung=strlen($a);
    //conto quanti decimali ci sono nel numero
    $dec=$lung-$pos-1;
    //se sono più di 2 tronco a 2
    if($dec>2){
    $da_eliminare=$dec-2;
    $num=substr($a, 0,($lung-$da_eliminare));
    }else{
    //altrimenti nulla
    $num=$a;
    }
    //sostituisco il punto con nulla
    $num=str_replace(".","",$num);
    //aggiungo gli 0 alla sinistra del numero
    $num=str_pad($num,9,"0",STR_PAD_LEFT);
    //stampo il risultato
    echo $num."</br>";
    ?>

  3. #3

  4. #4
    Originariamente inviato da telegio
    http://forum.html.it/forum/showthrea...hreadid=845260

    vedi se è il tuo caso..
    questo metodo mi sa che arrotonda

  5. #5
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    ..non ho capito NIENTE..
    pardon..

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Bhe a me sembra perfetta!!!

    codice:
    <?php
    //il numero lo uso come un testo
    $a=1230.567;
    //cerco dove si trova il .
    $pos=strpos($a, ".");
    //controllo la lunghezza della stringa
    $lung=strlen($a);
    //conto quanti decimali ci sono nel numero
    $dec=$lung-$pos-1;
    //se sono più di 2 tronco a 2
    if($dec>2){
    $da_eliminare=$dec-2;
    $num=substr($a, 0,($lung-$da_eliminare));
    }else{
    //altrimenti nulla
    $num=$a;
    }
    //sostituisco il punto con nulla
    $num=str_replace(".","",$num);
    //aggiungo gli 0 alla sinistra del numero
    $num=str_pad($num,9,"0",STR_PAD_LEFT);
    //stampo il risultato
    echo $num."</br>";
    ?>

    Non mi sembra ci siano problemi.... o sbaglio??


    Graaaaaazie

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Scusate partendo dal codice indicato.... come posso applicare la soluzione opposta

    quindi partendo dal numero nel formato modiciato (senza virgole e con i decimali nelle ultime due posizioni) vorrei arrivare al numero "tradizionale"

    Grazie

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Please help me!! Vorrei ricostruire la struttura del numero originale

  9. #9
    Originariamente inviato da Valeria75_bis
    Scusate partendo dal codice indicato.... come posso applicare la soluzione opposta

    quindi partendo dal numero nel formato modiciato (senza virgole e con i decimali nelle ultime due posizioni) vorrei arrivare al numero "tradizionale"

    Grazie
    codice:
    $originale = "001234567";
    $riconvertito = $originale / 10;
    (però occhio...se parti da 1234,567, tu chiedi di convertire in 1234567 e ti perdi informazioni. Se riconverti, con qualunque metodo, ti ritrovi 1234,56...perdi 0,007!!)

    edit: per l'altra questione, c'è un modo più semplice...
    codice:
    $originale = 12345.678;
    $convertito = str_pad((int_val($originale * 10), 9, "0", STR_PAD_LEFT);
    però il numero di partenza non può essere superiore a 9999999,99 (9.999.999,99) altrimenti ti perdi informazioni.
    Questo sia col mio metodo che con qualunqe altro

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Graaaazie per l'aiuto!!!


    Quindi hai compresso tutto il codice precedente in

    $originale = 12345.678;
    $convertito = str_pad((int_val($originale * 10), 9, "0", STR_PAD_LEFT);

    per generare il mio numero senza separatori migliaia e senza decimali??


    e poi basta fare un /10 per tornare alla versione originale

    corretto?

    Grazie

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.