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

    Confronto tra decimali, float, interi ecc

    Buon giorno.
    Dovrei fare un confronto tra costi per esempio:
    codice:
    if($row['costo']<=100000){
    echo "minore";
    }
    ecc ecc
    $row['costo'] ha valori decimal esempio 92.100,14.
    Ho provato a confrontarli come sopra, ma anche se trovo costi maggiori di 100000 mi restituisce "minore".
    Mi aiutate per favore?
    Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    676
    Il problema è la forma del numero, se tu avessi 92100.14 per confrontarlo potresti usare la funzione bccomp().

    Io ti consiglierei di trasformare il numero nel formato con il solo . e confrontarlo con la funzione che ti ho detto.
    Per la conversione dovresti poter usare number_format()

  3. #3
    Non ci dici che tipo di variabile è $row['costo']... è un campo di un db risultante da una query?

    Se si, allora è una stringa, e per essere sicuri di ciò che accade la cosa migliore è convertire esplicitamente a float:

    if (floatval($row)<=100000)

    Ma attenzione agli arrotondamenti: se $row[costo] è un valore che risulta da un calcolo e non un valore esplicitamente inserito dall'utente, potrebbe non valere quello che ti aspetti, perché gli arrotondamenti a volte non funzionano come ti aspetti.

    Per capirci, possono succedere cose come: 33,33 + 33,33 + 33,33 = 100,1 (mentre il risultato corretto dovrebbe naturalmente essere 99,99)...
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  4. #4
    Quote Originariamente inviata da Shores Visualizza il messaggio
    Non ci dici che tipo di variabile è $row['costo']... è un campo di un db risultante da una query?

    Se si, allora è una stringa, e per essere sicuri di ciò che accade la cosa migliore è convertire esplicitamente a float:

    if (floatval($row)<=100000)

    Ma attenzione agli arrotondamenti: se $row[costo] è un valore che risulta da un calcolo e non un valore esplicitamente inserito dall'utente, potrebbe non valere quello che ti aspetti, perché gli arrotondamenti a volte non funzionano come ti aspetti.

    Per capirci, possono succedere cose come: 33,33 + 33,33 + 33,33 = 100,1 (mentre il risultato corretto dovrebbe naturalmente essere 99,99)...
    Si è vero scusatemi.
    Il campo $row['costo'] è un valore decimal restituito da DB.
    Comunque risolto, vi ringrazio come sempre.
    Alla prossima.

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