# Sqlite, activerecord e Float

**URL:** <https://www.ruby-forum.com/t/sqlite-activerecord-e-float/82298>\
**Category:** IT\
**Created:** [January 18, 2007, 10:29pm UTC](https://www.ruby-forum.com/t/sqlite-activerecord-e-float/82298 "2007-01-18T22:29:53Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![gendag](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/f04885/32.png) [@gendag](https://www.ruby-forum.com/u/gendag)\
**Post date:** [January 18, 2007, 10:29pm UTC](https://www.ruby-forum.com/t/sqlite-activerecord-e-float/82298/1 "2007-01-18T22:29:53Z")

</div>

Salve a tutti!  
Sto realizzando una applicazione desktop che utilizza sqlite +  
activereacord e  
mi trovo ad avere un problema con il tipo di dato FLOAT. Mi spicego  
megli, all’interno della tabella Articolo ho un campo “prezzo” che deve  
rappresentare il prezzo in euro dell’articolo (quindi al massimo 2 cifre  
decimali). Volevo quindi salvare il prezzo come Float, solo che quando  
provo ad aggiungere un articolo con prezzo pari a 55.3 euro (per  
esempio), ho il seguente errore:

SQL (0,000000) SQLite3::SQLException: 14 values for 13 columns: INSERT  
INTO articolo (“carico”, “fornitore\_id”, “marca\_id”, “colore\_id”,  
“tipocapo\_id”, “id\_codice\_a\_barre”, “stagioneeanno\_id”, “prezzo”,  
“modello\_id”, “rimanenza”, “scarico”, “taglia\_id”, “codice\_a\_barre”)  
VALUES(5, 1, 1, 1, 1, 1, 7, 55,3, 1, 5, 0, 1, ‘1’)

Il problema risiede nel modo con il quale il Float 55.3 viene convertito  
in stringa, infatti 55.3 diventa 55,3 e la virgola crea il problema.  
Infatti l’errore  
che riporta SQLite e’ che vengono forniti 14 valori invece di 3, proprio  
perche; 55,3 viene visto come due valori 55 e 3.

A qualcuno e’ mai successo qualcosa del genere? Se si’, come avete  
risolto?

Grazie mille!

Gendag

---

<div class="post-metadata">

**Author:** ![gendag](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/f04885/32.png) [@gendag](https://www.ruby-forum.com/u/gendag)\
**Post date:** [January 19, 2007, 4:30pm UTC](https://www.ruby-forum.com/t/sqlite-activerecord-e-float/82298/2 "2007-01-19T16:30:04Z")

</div>

non mi Ã¨ mai capitato ma potresti cmq sostituire il carattere all’  
interno  
della stringa prima di mandarlo alla query.

Saluti Andrea

----- Original Message -----  
From: “Gendag” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Sent: Thursday, January 18, 2007 10:29 PM  
Subject: [ruby-it] Sqlite, activerecord e Float

> SQL (0,000000) SQLite3::SQLException: 14 values for 13 columns: INSERT
> 
> A qualcuno e’ mai successo qualcosa del genere? Se si’, come avete  
> risolto?
> 
> Grazie mille!
> 
> Gendag
> 
> –  
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).

* * *

---

<div class="post-metadata">

**Author:** ![gendag](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/f04885/32.png) [@gendag](https://www.ruby-forum.com/u/gendag)\
**Post date:** [January 19, 2007, 4:30pm UTC](https://www.ruby-forum.com/t/sqlite-activerecord-e-float/82298/3 "2007-01-19T16:30:44Z")

</div>

On 1/18/07, Gendag [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Salve a tutti!  
> Sto realizzando una applicazione desktop che utilizza sqlite +  
> activereacord e  
> mi trovo ad avere un problema con il tipo di dato FLOAT. Mi spicego  
> megli, all’interno della tabella Articolo ho un campo “prezzo” che deve  
> rappresentare il prezzo in euro dell’articolo (quindi al massimo 2 cifre  
> decimali). Volevo quindi salvare il prezzo come Float, solo che quando

Stessa soluzione suggerita a David:

def before\_save  
price = price\_before\_type\_cast.sub(“,”, “.”)  
end

Però ti consiglio di non usare float per la valuta. Meglio qualcosa  
tipo DECIMAL(10,2)

Matteo

---

<div class="post-metadata">

**Author:** ![gendag](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/f04885/32.png) [@gendag](https://www.ruby-forum.com/u/gendag)\
**Post date:** [September 25, 2007, 10:33pm UTC](https://www.ruby-forum.com/t/sqlite-activerecord-e-float/82298/4 "2007-09-25T22:33:39Z")

</div>

> Però ti consiglio di non usare float per la valuta. Meglio qualcosa  
> tipo DECIMAL(10,2)

Non e` male questo, in termini di Ruby... poi per il db, useresti 'cents'. Cosi` uno evita del tutto una serie di possibili errori.

[http://dist.leetsoft.com/api/money/](http://dist.leetsoft.com/api/money/)

–  
David N. Welton

- [David N. Welton](http://www.dedasys.com/davidw/)

Linux, Open Source Consulting

- [http://www.dedasys.com/](http://www.dedasys.com/)
