2012-08-29 12 views
6

PHP esegue uno script che calcola correttamente un valore. Quando echo quel valore, esce come 4.865472349Quale tipo SQL devo usare per inserire il valore 4.865472349

Quindi un semplice script di aggiornamento viene utilizzato per inserire il valore nel mio database.

$query = "UPDATE members 
    SET rating = $r 
    WHERE username = '$username'"; 
mysql_query($query); 

Quando faccio questo, il valore che viene inserito nel database è 5.

Se sostituisco $ R nella formula precedente, con 4,865,472349 millions direttamente, produce lo stesso risultato.

Chiaramente questo è perché il mio tipo SQL è stato impostato su "integer"

Ma Im non sicuro di cosa modificarlo al fine di risolvere questo problema. Qualsiasi aiuto?

+1

cosa del database stai usando? Qual è il tuo intervallo di valori consentito? Di quale precisione hai bisogno? – RedFilter

+1

Aggiunto tag mysql a causa della riga 'mysql_query'. –

risposta

3

Probabilmente si dovrebbe usare DOUBLE. Ha la stessa precisione e portata dei numeri in virgola mobile in PHP (nella maggior parte delle configurazioni).

per cambiare il tipo usando PHPMyAdmin:

  1. Fare clic sulla tabella
  2. Cliccare sulla struttura
  3. Clicca sui cambiamenti (l'icona della matita) accanto voto
  4. Sotto "Tipo", selezionare l'opzione "DOUBLE"
  5. Hit Salva
+0

Vorrei usare i decimali in modo da non avere problemi con la funzione Aritmetica Floating Point in seguito. – CaffGeek

+0

+1. DOPPIO è la strada da percorrere, purché non si tengano conto delle approssimazioni decimali. Se hai bisogno di valori decimali precisi, senza approssimazioni, e disponi di un intervallo limitato per il valore massimo, così puoi vivere all'interno di una determinata SCALA e PRECISIONE, quindi "DECIMAL" è la strada da percorrere. – spencer7593

0

Modifica il colle umn digita nel database per poter contenere più di un intero.

ALTER TABLE members 
CHANGE rating rating float(10,9); 
+0

Questo è per mysql. –

+0

Qualunque consiglio su phpmyadmin – user187680

+0

seleziona il database e trova la colonna sql e copia, incolla, esegui.C'è anche un modo di fare. Probabilmente qualcosa come la tabella di modifica e modifica il tipo di colonna da INT a float (10,9) –

0

È possibile utilizzare float, double o decimal in base ai numeri che verranno memorizzati. Direi che il float è abbastanza buono.

3

Se si desidera che la stessa precisione 4,865,472349 millions, è possibile utilizzare DECIMAL (10,9)

Riferimento

Ad esempio, un (18,9) colonna DECIMAL ha nove cifre su entrambi i lati del punto decimale, quindi la parte intera e la parte frazionaria richiedono ciascuno 4 byte. Una colonna DECIMAL (20,6) ha quattordici cifre intere e sei cifre frazionarie. Le cifre intere richiedono quattro byte per nove cifre e 3 byte per le restanti cinque cifre. Le sei cifre frazionarie richiedono 3 byte.

Supponendo che si sta utilizzando MySQL

+0

+1. Il tipo DECIMAL è la strada da percorrere, se disponi di un intervallo limitato (valore massimo) e puoi vivere con un intervallo specificato per SCALE e PRECISION. In caso contrario, un DOUBLE fornirà un intervallo molto più ampio, ma con alcune imprecisioni (approssimazioni) nella memorizzazione e nel recupero dei valori decimali. – spencer7593

Problemi correlati