Visualizzazione risultati 1 fino 11 di 11

Discussione: [php]funzione che mi restituisca il num della stessa decina ma che termini con zero

  1. #1
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito [php]funzione che mi restituisca il num della stessa decina ma che termini con zero

    Salve,
    conoscete una funzione che mi restituisca un valore del tipo..

    esempio:

    se io ho 47 mi deve dare 40
    31 -> 30
    28 -> 20
    25 -> 20
    23 -> 20
    50 -> 50
    42 -> 40
    12 -> 10
    7 - >0




    cioè mi deve portare il numero all'inizio della decina.
    spero di essere stato chiaro

    ciao
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  2. #2
    Guest

    Predefinito

    Trimmare le ultime cifre e aggiungere 0 in fondo al numero trimmato va bene?
    [Solo se usi numeri di due cifre...]

  3. #3
    Guest

    Predefinito

    Per arrotondare alla decina basta usare gli operatori matematici di base e un 'cast' a intero,
    tutto in una sola riga:

    Codice PHP:
    $num = ((int)($num/10))*10;
    Funziona con qualsiasi cifra:
    999999 -> 999990
    99 -> 90
    9 -> 0

    Spiegando i passaggi singolarmente,
    se $num = 99:

    1) 99/10 = 9.9
    2) (int)9.9 = 9
    3) 9*10 = 90

    ciao

  4. #4
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    Citazione Originalmente inviato da NoSpam
    Per arrotondare alla decina basta usare gli operatori matematici di base e un 'cast' a intero,
    tutto in una sola riga:

    Codice PHP:
    $num = ((int)($num/10))*10;
    Funziona con qualsiasi cifra:
    999999 -> 999990
    99 -> 90
    9 -> 0

    Spiegando i passaggi singolarmente,
    se $num = 99:

    1) 99/10 = 9.9
    2) (int)9.9 = 9
    3) 9*10 = 90

    ciao
    grazie
    comunque,funzioni che facciano questo lavoretto sugli interi non esistono in php?
    non parlo di funzioni che lavorino sulle stringhe.ciao
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  5. #5
    radaweb non è connesso Utente giovane
    Data registrazione
    17-05-2003
    Messaggi
    53

    Predefinito

    In PHP il tipo dipende dall'uso che ne fai (ovvero non ci sono dichiarazioni forti per i tipi, come in altri linguaggi).

    Se in una particolare situazione vuoi gestire una variabile come un tipo specifico ci sono le funzioni di conversione apposta :)
    It's always a good day to code

  6. #6
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    Citazione Originalmente inviato da radaweb
    ci sono le funzioni di conversione apposta :)
    quali sono?
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  7. #7
    radaweb non è connesso Utente giovane
    Data registrazione
    17-05-2003
    Messaggi
    53

    Predefinito

    Scusa, errore mio, ricordavo male.
    Ci sono solo i cast, come ti ha fatto vedere NoSpam.
    It's always a good day to code

  8. #8
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    ok,grazie per la risposta:)
    ciao!
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da Xsescott
    non parlo di funzioni che lavorino sulle stringhe.ciao
    Nel dubbio.. la soluzione di prima non fa lavori su stringhe. Ma penso non intendessi questo.. però non si sa mai

    Citazione Originalmente inviato da Xsescott
    comunque,funzioni che facciano questo lavoretto sugli interi non esistono in php?
    Guarda, in php esistono fin troppe funzioni per le più disparate esigenze..
    ma nello specifico per il tuo caso non mi sembra esista una funzione apposita (in effetti almeno a me non pare un'esigenza tanto comune).

    Per la cronaca, la funzione disponibile che più gli somiglia è il round() con precisione negativa cioè per arrotondare un intero alla decina:
    round(9993, -1)
    che ritorna 9990

    peccato che essendo un arrotondamento per approssimazione (round to nearest) se provi 9996 ti restituisce 10000
    ..e non mi sembra il tuo caso

    Tieni comunque a mente che gli operatori sono sempre più veloci di una chiamata ad una funzione, quindi di certo non nuoce usarli (come nella soluzione proposta)

  10. #10
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Citazione Originalmente inviato da NoSpam
    Per la cronaca, la funzione disponibile che più gli somiglia è il round() con precisione negativa cioè per arrotondare un intero alla decina:
    round(9993, -1)
    che ritorna 9990

    peccato che essendo un arrotondamento per approssimazione (round to nearest) se provi 9996 ti restituisce 10000
    ..e non mi sembra il tuo caso

    Tieni comunque a mente che gli operatori sono sempre più veloci di una chiamata ad una funzione, quindi di certo non nuoce usarli (come nella soluzione proposta)
    Esiste la funzione floor.
    Codice PHP:
    $num=99;
    $num=floor($value/10)*10;
    echo
    $num; // 90
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  11. #11
    Guest

    Predefinito

    Ovvio che esiste il floor,
    ma purtroppo floor non prevede un parametro come il round per sbrigare direttamente la decina, quindi visto che da sola non sbriga il problema come chiedeva Xescott (e quindi si devono usare operatori) citavo solo il round che aveva una parametro simile dove -1 crea proprio la precisione in decine.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •