Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Problema con numeri dopo le virgole...

    Ciao a tutti!!!
    Vi espongo il mio problema....
    Ho questo semplice codice:


    <?
    $peso1 = "1.00";
    $trasporto1 = (($peso1 * 0.10 ) + ( $distanza_cliente * 0.10 ));
    $iva1 = "10";
    $prezzo_iva_esclusa1 = "2.00";
    $prezzo_iva_inclusa1 = (($prezzo_iva_esclusa1*$iva1)/"100")+$prezzo_iva_esclusa1;
    ?>


    Non credo che ci sia bisogno di spiegare il calcolo....
    Il problema è il risultato che si ottiene....

    Certe volte visualizza due cifre dopo la virgola "il punto" e certe volte visualizza solo una cifra....
    è possibile fare in modo che i risultati ottenuti abbiano sempre 2 numeri dopo la virgola?
    Es 2.10 al posto di 2.1?

  2. #2
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    764
    str_pad is the answer!
    eXvision

  3. #3
    Utente di HTML.it L'avatar di ZaK78
    Registrato dal
    Dec 2000
    Messaggi
    35
    visualizza una sola cifra perche' se la seconda e' uno 0, non serve ai fini dei calcoli. (2.2 = 2.20)

    Il tuo e' solo un problema di visualizzazione e si risolve con le funzioni di stampa formattata:


    prova con
    printf("%.2f", $prezzo_iva_inclusa1);


    %.2f indica che la cifra che stai stampando e' un float (numero in virgola mobile), e la precisione deve essere di due cifre dopo il .

    Inoltre ti consiglio di togliere tutte le "" che racchiudono i tuoi valori numerici.
    le "" si utilizzano per le stringhe non per i numeri.
    anche se lo script funziona correttamente (merito delle conversioni interne dell'interprete php) logicamente e' sbagliato scrivere $peso1 = "1.00";
    la forma corretta e' $peso1 = 1.00;



    quindi:

    <?
    $peso1 = 1.00;
    $trasporto1 = (($peso1 * 0.10 ) + ( $distanza_cliente * 0.10 ));
    $iva1 = 10;
    $prezzo_iva_esclusa1 = 2.00;
    $prezzo_iva_inclusa1 = (($prezzo_iva_esclusa1*$iva1)/100)+$prezzo_iva_esclusa1;
    ?>

  4. #4
    non è più corretto number_format(); ?
    Ciao!

  5. #5
    Utente di HTML.it L'avatar di ZaK78
    Registrato dal
    Dec 2000
    Messaggi
    35
    Originariamente inviato da fmortara
    non è più corretto number_format(); ?
    si e' corretto anche quello

    nel caso in questione anche money_format().

    Personalmente non li ho mai usati, provenendo dal C prediligo printf e sprintf (sara' la C-deformazione) :P

  6. #6

    Perfetto!

    Con:
    printf("%.2f", $prezzo_iva_inclusa1);
    Funziona alla perfezione.
    number_format(); è stata la mia prima prova.... Purtroppo, genera un errore nel passaggio successivo. (Un calcolo fatto dal "java script").
    Con printf("%.2f", $prezzo_iva_inclusa1); non genera l'errore.

    Ps. Grazie per il consiglio.....


    Pps. Appena finisco il lavoro provo anche money_format()!

  7. #7

    SECONDO PROBLEMA

    Per forza maggiore, devo generare un file htm che contenga una tabella che racchiude i vari risultati con le due cifre dopo la virgola.
    Se fosse un file php potrei scrivere:
    <?php printf("%.2f", $prezzo_iva_inclusa1); ?>
    In questo caso, devo riuscire a trasformare la variabile prima di inserirla nella tabella da creare.

    Nella mia inesperienza, ho provato a scrivere:

    $prezzo_trasformato = printf("%.2f", $prezzo_iva_inclusa1);

    $riga1 ="<tr><td align=center>$descr1</td><td align=center>$pta1 Kg</td><td align=center>$campoiva1</td><td align=right>$prezzo_trasformato</td></tr>";

    Naturalmente il risultato non è quello sperato: al posto di aggiungere i due numeri dopo la virgola, moltiplica la variabile $prezzo_iva_inclusa1 * 2

    Mi potete dare una mano?

  8. #8
    Usa number_format();

    In ogni caso dopo number format non puoi usare il numero per fare calcoli, se non sbaglio. O forse non puoi usarlo se usi la virgola come separatore dei decimali.
    Ciao!

  9. #9

    Funziona!!!!!

    Grazie a tutti!
    Senza il vostro aiuto sarei ancora in crisi!

    number_format(); è quello che mi serviva!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.