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.