Problem with sqlite3 and Decimal

Frank Millman frank at chagford.com
Sat Dec 12 00:10:14 EST 2015


"Chris Angelico"  wrote in message 
news:CAPTjJmor6NewucCo7XTSSwyyfbgwCWZ8Jt-MjjkYSjOCFu78_A at mail.gmail.com...

On Fri, Dec 11, 2015 at 8:21 PM, Frank Millman <frank at chagford.com> wrote:
> > I noticed one oddity - I am asking sqlite3 to store the value as a 
> > string,
> > but then I am asking it to perform arithmetic on it.

> It's an SQLite3 issue, not a Python one. I used the sqlite3
> stand-alone tool to do the same thing:

> sqlite> update fmtemp set bal = bal + cast('123.45' as numeric);
> sqlite> select bal from fmtemp;
> ...
> 5678.7
> 5802.15
> 5925.59999999999
>

You are right. I am still investigating alternatives, and will report back, 
but here is a quick question.

I can reproduce your example above. However, if I set the initial value to 
5678.7, then the sequence goes

5678.7
5802.15
5925.6
6049.05
6172.5

I would have thought that adding 123.45 to 5802.15 would always produce the 
same result, but here it seems to depend on prior events.

Any idea why? Academic interest only, but I am curious.

Frank





More information about the Python-list mailing list