2018-04-04 02:51:03 Martin Blais <bl...@furius.ca>:
> 
> I believe you may have misunderstood my explanation.
> The interpolated number for cash /does/ use the inferred tolerance from this 
> transaction to round it to a reasonable
> value.
> 
> 
Oh, okay. This is surprising indeed. I thought Beancount is very strict
on internal calculation so the rounding only occurs when the result is
for human eyes (e.g. PRINT). I never though Beancount does implicit
rounding for non-human-readable things...

Is there a reason for such a design? The product of two
two-decimal-digit numbers is only a four-decimal-digit number. It is
even not bad for human eyes IMHO.

> 
>     Is there a way to turn off the implicit rounding without padding 0.1 USD
>     to 0.1000 USD?
> 
> 
> Not at the moment, no.
> 
> What you could do is ensure your importer always formats those floating-point 
> numbers with two digits of precision.
> 

Thanks. I'll take care of the decimal digits in the importer in the
future.

> (I'm wondering if, in addition to 
> - the tolerance and 
> - the rendering precision, 
> we should be able to set 
> - the rounding resolution
> in those new options I'll add to override all the inferred values.)
> 
> 

Sounds like a good idea! For the pedant and the OCD, turning of rounding
all entirely is a good choice :-)

> 
> 
>     2018-04-04 01:53:19 Martin Blais <bl...@furius.ca>:
>     > This is correct.
>     >
>     > First, the PRINT command of the shell (which is what I believe you're 
> using) will render the numbers at their
>     stored
>     > precision:
>     > 
> https://bitbucket.org/blais/beancount/src/4a3995617e7df5ffa3377711382c7ad2f9d8935b/beancount/query/
>     query_execute.py?at=
>     > default&fileviewer=file-view-default#query_execute.py-92
>     >
>     > I kept it this way originally because PRINT was intended for debugging, 
> so rounding using the most common
>     precision
>     > seen in the file seemed it would create problems with interpreting the 
> data.  I'm not 100% this was the right
>     choice.
>     >
>     > Second, about rounding: by default the tolerance used is that which is 
> inferred on the transaction:
>     > 
> https://bitbucket.org/blais/beancount/src/4a3995617e7df5ffa3377711382c7ad2f9d8935b/beancount/core/interpolate.py?
>     at=
>     > default&fileviewer=file-view-default#interpolate.py-324
>     >
>     > The comment you're referring to applies to the case where a tolerance 
> cannot be inferred at all (like in the
>     first
>     > example in that section). In that case, no rounding occurs. I'll 
> clarify the docs.
>     >
>     > (This hurts my head too.)
>     >
>     >
>     >
>     >
>     > On Sun, Apr 1, 2018 at 5:13 AM, Zhuoyun Wei <wzy...@wzyboy.org> wrote:
>     >
>     >     Hi Martin,
>     >
>     >     Beancount seems to round inferred numbers by default:
>     >
>     >     1970-01-01 open Assets:Cash
>     >     1970-01-01 open Assets:Positions
>     >     1970-01-01 open Expenses:Financial:Commissions
>     >
>     >     2018-03-29 * "Buy 10 BILI"
>     >       Assets:Cash
>     >       Assets:Positions                 10 BILI {11.4899 USD, 
> 2018-03-29} @ 11.4899 USD
>     >       Expenses:Financial:Commissions  0.1 USD
>     >
>     >     turns into:
>     >
>     >     2018-03-29 * "Buy 10 BILI"
>     >       Assets:Cash                     -115.0 USD
>     >       Assets:Positions                    10 BILI {11.4899 USD, 
> 2018-03-29} @ 11.4899 USD
>     >       Expenses:Financial:Commissions     0.1 USD
>     >
>     >     The full-precision number for Assets:Cash should be -114.9990 USD, 
> but
>     >     it was incorrectly rounded to -115.0 USD.
>     >
>     >     In the documentation
>     >     
> https://docs.google.com/document/d/1lgHxUUEY-UVEgoF6cupz2f_7v7vEF7fiJyiSlYYlhOo/
>     >     section "Precision of Inferred Numbers":
>     >
>     >     > If the default tolerance is not overridden in the input file—and
>     >     > therefore is zero—the full precision will be used; no rounding 
> occurs.
>     >
>     >     In the minimal example above, the precision seems to be inferred 
> from
>     >     0.1 USD commission. If I change the input file, changing commission 
> from
>     >     0.1 USD to 0.1000 USD, the output is correct:
>     >
>     >     2018-03-29 * "Buy 10 BILI"
>     >       Assets:Cash                     -114.9990 USD
>     >       Assets:Positions                       10 BILI {11.4899 USD, 
> 2018-03-29} @ 11.4899 USD
>     >       Expenses:Financial:Commissions     0.1000 USD
>     >
>     >     My broker-dealer returns the commission as 0.1 USD because it is a
>     >     floating point number in JSON (you cannot end numbers with zeros). 
> But
>     >     behind the scenes it calculates the cash balance with the 
> full-precision
>     >     numbers (e.g. 0.1000 USD). After a few transactions, the balance of
>     >     Assets:Cash has a difference of more than 0.005 USD with the
>     >     broker-dealer and thus fails the balance assertion.
>     >
>     >     Is there a way to turn off the implicit rounding without padding 
> 0.1 USD
>     >     to 0.1000 USD in the input file?
>     >
>     >     I am using tagged release 2.0.0.
>     >
>     >
>     >     --
>     >     Zhuoyun Wei
>     >
>     >     --
>     >     You received this message because you are subscribed to the Google 
> Groups "Beancount" group.
>     >     To unsubscribe from this group and stop receiving emails from it, 
> send an email to beancount+unsubscribe@
>     >     googlegroups.com.
>     >     To post to this group, send email to beancount@googlegroups.com.
>     >     To view this discussion on the web visit 
> https://groups.google.com/d/msgid/beancount/20180401091341.GA26139%
>     >     40tarball.wzyboy.org.
>     >     For more options, visit https://groups.google.com/d/optout.
>     >
>     >
>     > --
>     > You received this message because you are subscribed to the Google 
> Groups "Beancount" group.
>     > To unsubscribe from this group and stop receiving emails from it, send 
> an email to
>     > beancount+unsubscr...@googlegroups.com.
>     > To post to this group, send email to beancount@googlegroups.com.
>     > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/beancount/
>     > 
> CAK21%2BhPeexbubq8dEjvYOYuKd1tMOXh36CuByWPAG_yJa%3Df7zw%40mail.gmail.com.
>     > For more options, visit https://groups.google.com/d/optout.
> 
>     --
>     Zhuoyun Wei
> 
>     --
>     You received this message because you are subscribed to the Google Groups 
> "Beancount" group.
>     To unsubscribe from this group and stop receiving emails from it, send an 
> email to beancount+unsubscribe@
>     googlegroups.com.
>     To post to this group, send email to beancount@googlegroups.com.
>     To view this discussion on the web visit 
> https://groups.google.com/d/msgid/beancount/20180404064534.GA19470%
>     40herus.wzyboy.org.
>     For more options, visit https://groups.google.com/d/optout.
> 
> 
> --
> You received this message because you are subscribed to the Google Groups 
> "Beancount" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to
> beancount+unsubscr...@googlegroups.com.
> To post to this group, send email to beancount@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/beancount/
> CAK21%2BhNtSDWCxkFS8BbcBgp5wbXvLSSind089th%2Btf_Y9QAiWw%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
Zhuoyun Wei

-- 
You received this message because you are subscribed to the Google Groups 
"Beancount" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beancount+unsubscr...@googlegroups.com.
To post to this group, send email to beancount@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beancount/20180404070249.GA23685%40herus.wzyboy.org.
For more options, visit https://groups.google.com/d/optout.

Attachment: signature.asc
Description: PGP signature

Reply via email to