Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208

    Visualizzare i decimali solo se ci sono

    Salve a tutti,
    ho un problema che immagino essere di abbastanza semplice risoluzione, ma che in questa fase specifica mi sta mettendo in crisi.

    In una casella db mi ritrovo un valore FLOAT con i classici due decimali dopo la virgola (o dopo il punto se preferite).

    Quando vado a chiamare i dati a db, la visualizzazione risulta giustamente essere (come esempio) 36.00 anzichè 36, cosa che va bene se c'è un valore diverso da 0 nella parte decimale ma è assai brutta a vedersi se invece il numero esce formalmente fuori come un decimale ma è nella sostanza un intero.

    Ho testato il comportamento ed effettivamente per il php il numero "3.0" è un decimale, il semplice "3" è un intero. Come posso aggirare questa cosa? più che altro, quale funzione si usa?

  2. #2
    Innanzi tutto se devi memorizzare numeri decimali, usa il tipo numerico DECIMAL nel database. I FLOAT sono un'altra cosa e sono soggetti a problemi di arrotondamento se usati con l'idea che siano decimali con cifre fisse.

    A parte questo, per fare quello che chiedi e' sufficiente questa semplice funzione:
    Codice PHP:
    function decimal_format($n) {
        return (int) 
    $n == $n ? (int) $n $n;
    }

    echo 
    decimal_format(10.00); 

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Grande, grazie. Funziona alla perfezione.

    Fammi capire però. Questo starebbe a dire che se $n è un'intero, lo ritorno come semplice intero, altrimenti nella sua forma originaria $n se non ho capito male (con la forma contratta ci litigo un pò). In realtà non capisco bene in quale parte di questa espressione lui fa il check sui decimali pur funzionando perfettamente.

  4. #4
    Il check e' questo:
    codice:
    (int) $n == $n
    che controlla se un numero e' uguale alla sua versione intera.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Aaaah perfetto perfetto. Gentilissimo e iper-chiaro

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.