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

    Somma con decimali in php

    Ciao a tutti...

    Ho 2 caselle nel mio db My sql

    "entrate" "uscite"

    dove registro dei valori con la virgola...
    sul mio db ho impostato come VARCHAR e il valore me lo salva correttamente con la virgola..

    Quando faccio la somma entrate - uscite il totale non è con la virgola ma me lo arrotonda...

    come mai ???

    Ecco la somma:

    Codice PHP:
    $totale 0;

    /*Qui c'è un ciclo che mi calcola il totale*/

    $entrate $riga['entrate'];
    $uscite $riga['uscite'];
    $totale $totale + ($entrate $uscite);

    echo 
    $totale/*il totale non ha la virgola !!! */ 

  2. #2
    con la virgola sommi stringhe.... devi usare il punto come divisore dei decimali

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Probabilmente dipende dal fatto che nel database hai memorizzato i numeri con il carattere "virgola", e PHP quando converte le stringhe in numeri, non lo calcola come decimale (che invece si scrive con il "punto"). Basta trasformare la virgola in punto, cosi':

    codice:
    $entrate = str_replace(",",".",$riga['entrate']);
    $uscite = str_replace(",",".",$riga['uscite']);
    $totale = $entrate - $uscite;
    Ad ogni modo se devi memorizzare dei numeri decimali, ti consiglio di impostare i campi come decimali direttamente nel database... la soluzione che ti ho proposto e' di ripiego, dovresti rivedere la struttura del database e fare in modo di memorizzare i dati nel modo piu' corretto possibile...

  4. #4
    grazie...

    quindi o l'utente scrive , e io lo convergo in . (come sarebbe più giusto fare) oppure ripiego con la soluzione di Darsch2501???

  5. #5
    Originariamente inviato da Taca
    grazie...

    quindi o l'utente scrive , e io lo convergo in . (come sarebbe più giusto fare) oppure ripiego con la soluzione di Darsch2501???
    L'ideale sarebbe che il campo nel database fosse direttamente impostato su numerico in virgola mobile (FLOAT) e che al momento dell'inserimento facessi un controllo su quello che scrive l'utente. Se l'utetne scrive un numero decimale con il carattere "virgola" dovresti convertirlo in "punto" e memorizzarlo su database...

  6. #6
    Grazie....

    Però purtroppo il mio db è già popolato con VARCHAR con numeri con la "virgola" (Es. 610,10)

    ho fatto come mi hai detto:

    Codice PHP:
    /*Calcolo il totale*/
    $entrate str_replace(",",".",$riga['entrate']);
    $uscite str_replace(",",".",$riga['uscite']);
    $totale $totale + ($entrate $uscite); 
    però non funziona...

  7. #7
    io scrivo i numeri come li vuole mysql cioè con punto, ed ogni volta che devo interagire con essi uso l'apposita funzione di formattazione

    nel tuo caso invece non è che devi utilizzare floatval($stringa) ?
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

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.