Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Arrotondamento prezzi

  1. #1
    Utente di HTML.it L'avatar di Vinxi
    Registrato dal
    Jan 2002
    Messaggi
    61

    Arrotondamento prezzi

    Salve ragazzi,

    volevo chiedervi una mano.

    Dopo aver fatto alcuni calcoli, nel mio script ho dei numeri che dovrebbero essere arrotondati per formare un listino prezzi.

    Le cifre e le trasformazioni che vorrei sono ad esempio queste:

    1288,55 ---> 1300,00
    375,11 --> 400,00
    325,78 --> 300,00

    Come posso fare?
    Grazie!

  2. #2
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    1- usare la valuta italiana solo ed esclusivamente in visualizzazione, le virgole di separazione dei decimali ti fanno solo impazzire quando devi fare i conteggi (usa nel caso la number_format oppure imposta il "locale" del server per gestire i valori nella valuta italiana)
    http://php.net/manual/en/function.number-format.php


    2- usa le funzioni matematiche gia' fornite da php : http://it.php.net/manual/en/function.round.php

    3- rimosso da me ho scirto una baggianata .

    edit :
    ovviamente consiglio di farti 1 funzione per poter riutilizzare la funzionalità ove necessario.

    Ti faccio 1 esempio di funzione dammi 1 secondo che la testo
    Controllando la funzione round di php hai a disposizione un parametro mooooolto interessante .

    Codice PHP:
    function myRoundUp($val)
    {
        return 
    round($val,-2);

    TEST :
    Codice PHP:

    $val 
    "1288.55" ;
    $rounded myRoundUp($val) ;
    echo 
    $val." --> ".$rounded." ==> ".number_format$rounded "," "" )."



    $val "375.11" ;
    $rounded myRoundUp($val) ;
    echo 
    $val." --> ".$rounded." ==> ".number_format$rounded "," "" )."



    $val "325.78" ;
    $rounded myRoundUp($val) ;
    echo 
    $val." --> ".$rounded." ==> ".number_format$rounded "," "" )."

    ;


    $val "10.78" ;
    $rounded myRoundUp($val) ;
    echo 
    $val." --> ".$rounded." ==> ".number_format$rounded "," "" )."

    ;


    $val "1.78" ;
    $rounded myRoundUp($val) ;
    echo 
    $val." --> ".$rounded." ==> ".number_format$rounded "," "" )."

    ;

    $val "0.1" ;
    $rounded myRoundUp($val) ;
    echo 
    $val." --> ".$rounded." ==> ".number_format$rounded "," "" )."



  3. #3
    Utente di HTML.it L'avatar di Vinxi
    Registrato dal
    Jan 2002
    Messaggi
    61
    Perdona il ritardo nella risposta, sei stato gentilissimo.
    Ho risolto proprio con quella funzione che mi hai suggerito.

    Grazie ancora

  4. #4
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Nessun problema
    L'importante e' venirne fuori ... prima o dopo

    Alla prossima ciau

  5. #5
    Utente di HTML.it L'avatar di Vinxi
    Registrato dal
    Jan 2002
    Messaggi
    61
    Virus, aspetta!

    Ma se volessi un arrotondamento un po' meno "drastico"?

    Tipo:

    269,65€ --> 270€ (e non 300€)
    325,56€ --> 330€ (e non 300€)
    420,00€ --> 420€ (e non 400€)
    456,99€ --> 460€ (e non 500€)

  6. #6
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Come noti il secondo parametro che passi alla funzione di arrotondamento dice quante posizioni arrotondare.

    Se passi un valore positivo x arrotonda alla x cifra decimale, se ne passi uno negativo arrotandi invece alla x cifra unitaria con limite massimo il numero di decine del valore passato.

    In soldoni -1 dcine, -2 centinaia. -3 migliaia e cosi' via.
    Puoi quindi utilizzare la funzione che ti ho linkato per decidere quanto arrotondare di colta in volta passando dei comodi parametri di controllo puoi utilizzare la funzione round come meglio ti pare

    Codice PHP:

    function myRoundUp($val,$precision=2)
    {
        return 
    round$val $precision*-);
    }

    e quindi 

    echo myRoundUp269.65 ) ; 
    Ovviamente questo e' un esempio di come usare la round e di come incapsularla in una tua precisa funzione in modo da avere una procedura che esegua determinato codice per gli arrotondamenti, nessuno ti vieta di usare la funzione round cosi' com'e' con i parametri che prende. Sta a te decidere quale approccio e' migliore, solo che si ti serve eseguire molto spesso un determinato conteggio avere una procedura che limita le righe di codice ridondanti e' sempre una buona soluzione

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.