couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul Davis <paul.joseph.da...@gmail.com>
Subject Re: Fixed precision of floating point number not respected in views
Date Tue, 19 Feb 2013 15:14:36 GMT
Possible. Given what I know of JS and its numbers I wouldn't be highly
optimistic that its not a mechanical turk.

On Tue, Feb 19, 2013 at 8:42 AM, Volker Mische <volker.mische@gmail.com> wrote:
> I think it does address indexes. Only the JavaScript engine will deal
> with the encoding/decoding. AFAIK SpiderMonkey/V8 doeas the right thing.
>
> Cheers,
>   Volker
>
> On 02/19/2013 02:53 PM, Paul Davis wrote:
>> And doesn't address indexes.
>>
>> On Tue, Feb 19, 2013 at 7:51 AM, Volker Mische <volker.mische@gmail.com> wrote:
>>> Or we stop converting the document body into Erlang and store them as
>>> raw JSON strings, so that there is no Erlang<->JSON conversion going on.
>>> I know that's a big change.
>>>
>>> Cheers,
>>>   Volker
>>>
>>> On 02/19/2013 01:57 PM, Paul Davis wrote:
>>>> It used mochijson2 which uses mochinum.erl which uses arbitrary
>>>> precision arithmetic which makes this a lot easier (IIRC, its the
>>>> ability to raise numbers to arbitrarily large powers).
>>>>
>>>> I do agree the behavior would be nice if it could be provided but the
>>>> runtime cost is prohibitive if implemented in Erlang (arbitrary
>>>> precision arithmetic is also generally slower than FPU operations).
>>>>
>>>> Also, so we're being more specific, it returned numbers with the
>>>> fewest number of digits required that could then be fed into a
>>>> standard libc parsing algorithm to return the same floating point
>>>> representation based on what's in RAM. There are other assumptions and
>>>> caveats related to the various thingers as well.
>>>>
>>>> On Tue, Feb 19, 2013 at 6:47 AM, Volker Mische <volker.mische@gmail.com>
wrote:
>>>>> On 02/19/2013 10:13 AM, Paul Davis wrote:
>>>>>> On Tue, Feb 19, 2013 at 3:09 AM, Robert Newson <rnewson@apache.org>
wrote:
>>>>>>> "I have stored fixed precision numbers in a database". You haven't,
>>>>>>> unfortunately, because you can't. Javascript only has one kind
of
>>>>>>> number, 64-bit floating point.
>>>>>>>
>>>>>>
>>>>>> Its a tidge more complicated than that. Its actually a combination
of
>>>>>> the Erlang JSON decoder/encoder roundtrip plus the JavaScript decoder.
>>>>>
>>>>> I remember that older version of Apache CouchDB (IIRC 1.1) did return
>>>>> the numbers as they were put it. Don't know which decoder was used back
>>>>> then.
>>>>>
>>>>> I'd love to see this behaviour coming back.
>>>>>
>>>>> Cheers,
>>>>>   Volker
>>>>>
>>>>>>
>>>>>>>
>>>>>>> If you want fixed precision, you'll need to store your numbers
in
>>>>>>> strings and manipulate them that way too. A quick google in the
past
>>>>>>> has shown a few "bignum" libraries for Javascript.
>>>>>>>
>>>>>>
>>>>>> Though the end result is the same. If you need fixed precision
>>>>>> numbers, then using JSON's syntax for "numbers with decimal points
and
>>>>>> non-zero digits after the decimal point" will lead to surprising
>>>>>> results and lack of fidelity.
>>>>>>
>>>>>> I've had a few discussions on this for Jiffy in terms of round
>>>>>> tripping something as trivial as 1.1 through a JSON decoder/encoder
>>>>>> pair. Turns out this is really really hard.
>>>>>>
>>>>>> Here's the Python ticket where they added it to the language for
a
>>>>>> good discussion on the details required to make this actually work:
>>>>>>
>>>>>> http://bugs.python.org/issue1580
>>>>>>
>>>>>>> B.
>>>>>>>
>>>>>>> On 19 February 2013 08:20, Luca Morandini <lmorandini@ieee.org>
wrote:
>>>>>>>> On 02/19/2013 07:05 PM, Luca Morandini wrote:
>>>>>>>>>
>>>>>>>>> Folks,
>>>>>>>>>
>>>>>>>>> I have stored fixed precision numbers in a database,
but when they are
>>>>>>>>> spit out by
>>>>>>>>> a view, the precision is full, and -which is worse- the
trailing decimal
>>>>>>>>> digits
>>>>>>>>> are not all zeroes.
>>>>>>>>
>>>>>>>>
>>>>>>>> In the CouchDB: The Definitive Guide", I have found out that
"most clients"
>>>>>>>> would interpret, say, 15.7 as 15.69999999999 (or so), which
I suppose is
>>>>>>>> exactly what I observed... but what is meant as "client"
in this context, a
>>>>>>>> view engine ?
>>>>>>>>
>>>>>>>> Anyway, any view to tune this feature of the JavaScript view
engine ?
>>>>>>>>
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>>
>>>>>>>> Luca Morandini
>>>>>>>> Data Architect - AURIN project
>>>>>>>> Department of Computing and Information Systems
>>>>>>>> University of Melbourne
>>>>>>>> Tel. +61 03 903 58 380
>>>>>>>> Skype: lmorandini
>>>>>>>>
>>>>>
>>>
>

Mime
View raw message