This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC] moneypunct::frac_digits < 0 ?!?


Nathan Myers wrote:

...
A consistent interpretation of negative frac_digits() is that you
append extra zeroes at the end. I.e., if you get "3", and it says
-2 digits, you print "300". If you parse "300", discard the last two digits. (Probably the standard should be clarified to require
this behavior.)


This makes sense in dealing with massively inflated currencies, when there is no information in the low digits. (It might be
invidious to suggest examples other than the Weimar mark.)


...
> BTW, since the standard doesn't say what happens for negative values,
> the behavior is unspecified, and we're allowed to do almost anything.
> After we get it deployed and demonstrate it works, we can write up
> what we did, and submit it as "standardizing existing practice". :-)

Our implementation has a slightly different behavior in this case,
but only if ios::fixed is set: when frac_digits() is negative, we
take the absolute value of frac_digits() to be the precision of the
monetary value, including its fractional part. For instance, if
(frac_digits() == 3), the value 12.34 is formatted as 12.340, and
12.3456 as 12.345 by our money_put facet. This is just a side
effect of how we implement frac_digits in general and not a design
feature in its own right, but since this behavior is documented
changing it might cause us problems. I would be willing to support
your proposed behavior but only if ios::fixed is clear.

Martin


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]