On Nov 13, 2009, at 9:43 PM, mdipierro wrote: > > Fascinating. As an experiment I replaced str with repr and it usually > works with float. Float is better then integer because allows > migrations from one decimal type to float and vice versa and allows > for expressions involving different field types without major errors. > > The problem is that when it fails, it has major failures. > > Everybody should be aware that there will be much bigger rounding > errors with type='decimal' on sqlite than with type='double'. With > double the rounding errors will be of the order of required decimal > precision, much bigger than double precision. > > That is because is > >>>> a = 0.3/3 # is float >>>> print str(a)[0:5] > 0.1 > > while > >>>> from decimal import Decimal >>>> b=Decimal(repr(a)[0:5]) >>>> print b > 0.099 > > Conversions like the one above are necessary step to get data in/out > of database. > > The more I look into this the more I think we should not support it if > the database does not support it.
Perhaps the string conversion should use a formatted string, with the precision of the database field. > > Massimo > > On Nov 13, 9:27 pm, Jonathan Lundell <[email protected]> wrote: >> On Nov 13, 2009, at 4:36 PM, Massimo Di Pierro wrote: >> >>> In theory double has 53 bits. Yet I tried and it does not seem to work >>> properly. It rounds to the cents. You may want to try the attached >>> files. Perhaps I am doing something wrong. >> >> I'm not advocating floating point; I think it's a pain, and if integer is >> working, that's better. But.... >> >>>>> from decimal import * >>>>> b = Decimal("1234567891.987654321") >>>>> b >> >> Decimal('1234567891.987654321')>>> float(b) >> 1234567891.9876542 >>>>> str(float(b)) >> '1234567891.99' >>>>> repr(float(b)) >> >> '1234567891.9876542' >> >> I haven't checked, but it looks like an artifact of float.str. > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---

