numeri decimali e MySql

  • Creatore Discussione Creatore Discussione filomeni
  • Data di inizio Data di inizio

filomeni

Moderatore
Membro dello Staff
MOD
14 Mag 2006
1.054
6
38
53
Roseto degli Abruzzi (TE)
www.sitiweb.cloud
Ciao,
il problema sui calcoli con numeri decimali; quando la somma totale è sotto il migliaio tutto ok ma quando supera il 999.99 sorge il problema.
Spego, aggiungo al carrello e nel codice uso:
PHP:
$subCart=number_format($somma, 2);

//Output esempio 72.50
e fin qui regolare, ma se la variabile $subCart raggiunge il 1000 succede questo:
PHP:
$subCart=1008.45
$subCart=number_format($somma, 2);
//Output 1.00

ed è chiaro l'output ma la cosa che mi fa dannare è cosa usare per questa situazione.
la somma va memorizzata in db con DECIMAL (4,2).
Grazie
 
Ciao, DECIMAL (4,2) se non ricordo male vuol dire "cifra a 4 numeri compresi i 2 decimali", usa DECIMAL (7,2)
 
ho provato con DECIMAL (10,2) ma il risultato non cambia... Il problema è il solito tra inglese e italiano!!!! quando il numero passa a mille il punto dopo l'uno per l'inglese corrisponde alla virgola italiana. Quindi, giustamente il mille me lo traduce con 1.00 perche capisce che dopo il punto ci sono decimali e mi tronca dopo le due cifre. Quindi il problema è far capire a php che che non sono decimali ma migliaia...
Un pò contorto forse ma spero di aver chiarito
 
Mi riaggancio al discorso.
Si borgo, la funzione number_format() da te esplicata e giusta ed è quello che utilizzo nel mio carrello, ma il problema non è dopo la virgola ma prima... il decimale finchè viaggia fino al 999.99 il calcolo lo fa a mestiere ma allo scatto del 1000 arriva il problema!
Non lo considera 1000 ma 1.000 quindi il calcolo in output, ad esempio 1000.00 + 2.00 non considera il migliaio e diventa 1.20 e non 1.002,00 non so se mi sono spiegato...
 
ciao
scusa una domanda: come sono formattati i numeri nel campo del db?
cioè se estrai il numero col solito fetch e poi fai
var_dump($riga['numero']) cosa ti restituisce?
es
1000.00
o
1,000.00
o come
?
 
ciao
mi era saltato un pezzo, ti ho chiesto il formato perche se americano
PHP:
<?php
$uno="1,000.00";//formato americano
$due=2.00;
$tot=$uno+$due;
echo number_format($tot,2,'.','')."<br>";//restituisce 3.00 ERRORE
//quindi
$uno=str_replace(',','',$uno);
$tot=$uno+$due;
echo number_format($tot,2,'.','')."<br>";//restituisce 1002.00
echo number_format($tot,2,'.',',')."<br>";//restituisce 1,002.00 formato americano
echo number_format($tot,2,',','.')."<br>";//restituisce 1.002,00 formato italiano
?>
 

Discussioni simili