Hi Henry, Esteban, Joachim,

thanks for your opinion!

The ranges of my data are relatively small because my application deals
with travel expenses, e.g. Hotel receipts, Taxi receipts, Flights et. So,
99,99% of all my amounts are less than 10.000 Euro.

So I will try it with the Float solution and use a scale of 4.

...and I will indeed add checking for range! Good point, I do not have this
yet.

Sabine



On Mon, Aug 19, 2013 at 12:48 PM, Henrik Sperre Johansen [via Smalltalk] <
ml-node+s1294792n4704124...@n4.nabble.com> wrote:

>
> On Aug 19, 2013, at 10:38 , Sabine Knöfel <[hidden 
> email]<http://user/SendEmail.jtp?type=node&node=4704124&i=0>>
> wrote:
>
> > Hi,
> >
> > I am interested in your opinion.
> > I use FixedDecimal for computing currency amounts.
> > This works fine.
> >
> > When storing the amounts with voyage into mongo (I have a lot of
> them!!!),
> > normally, one currency amount would be stored into mongo as follows:
> >
> >           "vatAmountEUR": {
> >             "#instanceOf": "FixedDecimal",
> >             "negative": false,
> >             "number": NumberInt(90280),
> >             "part1": NumberInt(9),
> >             "part2": NumberInt(280),
> >             "scale": NumberInt(4)
> >          }
> >
> > I think, this is a lot of stuff for one single value. I tend to convert
> the
> > FixedDecimal into a Float for storing it. In this case, it would be like
> > this:
> >
> > "vatAmountEUR": 0.7196
> >
> > When loading, I immediately re-convert it into a FixedDecimal. I would
> do NO
> > computing with the float(!!).
> >
> > What is your opinion about this (rounding issues, performance, database
> size
> > etc.)?
> > Do you think, there is something against it? What would you do?
> >
> > Sabine
> There are rounding issues even without doing arithmetic, conversion scaled
> -> float WILL inherently be lossy due to float's fixed size.
> You are only ensured 15 decimal digits of precision with 64-bit floating
> point numbers like in Pharo (BSON Doubles):
> 98765432109.87658s5 asFloat asScaledDecimal: 5 98765432109.87659s5
>
> Though, Compared to using NumberInt ( a signed 32-bit integer, with max 9
> digits) for storing the unscaled number, it's actually the better option…
>
> I guess the morale is, either way, as long as you are storing values in
> fixed size data fields (and not say, a String), you need some checks in
> place to ensure the numbers you are saving are within valid ranges. ;)
>
> Cheers,
> Henry
>
>
> *signature.asc* (859 bytes) Download 
> Attachment<http://forum.world.st/attachment/4704124/0/signature.asc>
>
>
> ------------------------------
>  If you reply to this email, your message will be added to the discussion
> below:
>
> http://forum.world.st/your-opinion-about-storing-FixedDecimal-in-Mongo-tp4704104p4704124.html
>  To unsubscribe from your opinion about storing FixedDecimal in Mongo, click
> here<http://forum.world.st/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=4704104&code=c2FiaW5lLmtub2VmZWxAZ21haWwuY29tfDQ3MDQxMDR8MTA0OTM5MTYx>
> .
> NAML<http://forum.world.st/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>




--
View this message in context: 
http://forum.world.st/your-opinion-about-storing-FixedDecimal-in-Mongo-tp4704104p4704127.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.

Reply via email to