Note: This was originally posted by an inactive account. Content was preserved by moving under an admin account.
Originally posted by: SambaDancerDear Lavastorm developers,
As known and extensibly documented (for example:
here) the unsuspected Lavastorm user can be confronted with very strange and unexpected results when calculating with fields of the DOUBLE data type.
In my modest opinion, both the principle and the explanation of this phenomenon in both the Lavastorm documentation and (even more extensibly)
here, is very technical and pretty much incomprehensible for the
business user Lavastorm is targeting.
I use Lavastorm in an auditing environment and last week, I gave a 3-day basic training to 6 certified auditors in the use of Lavastorm.
I have been trying to explain why they got such strange results when calculating with floating points and why (for example) placing a filter on a certain number resulted in 0 results.
Although I showed all proposed workarounds, I have failed miserably in getting the message through, and 2 of the attendees even raised the question if Lavastorm would even qualify as a 'serious data analysis tool' "
if it can't even do what Excel can". You will understand my frustration...
I really don't want to get into a discussion if floating point arithmetic is perhaps superior to simple decimal calculation. My point is: if the targeted audience apparantly doesn't understand it, then something should change.
I therefore propose the following:
- Introduction of an new data type "DECIMAL" (or whatever you like to call it).
- For each field of type DECIMAL, the end-user can
choose the number of decimals, with a maximum of ... (10? 15?)
- Addition, subtraction, multiplication and division of two DECIMAL fields
or of an INT and a DECIMAL results in a product with the largest number of decimals of both input, unless specified otherwise. For example: (0.1*0.22 = 0.022); (123*45.67 = 5617.41); (123.45/678.9 = 0.18); (1.2345*6.789).ROUND(-3) = 8.381
- Rounding can be further controlled by multiplication with a 1 with the desired number of decimals. For example: (1.000000* 123.45/678.9 = 0.181838)
I sincerely hope that you will take my request into consideration.
Thanks so much in advance and best regards from The Netherlands,
Bart Roeleveld,
Senior Data Analysis Expert,
Coney B.V.