On Sunday, March 13, 2016, Ken Tanzer <ken.tan...@gmail.com> wrote:

>
> On Mar 13, 2016 6:29 PM, "David G. Johnston" <david.g.johns...@gmail.com
> <javascript:_e(%7B%7D,'cvml','david.g.johns...@gmail.com');>> wrote:
> >
> > On Sunday, March 13, 2016, Ken Tanzer <ken.tan...@gmail.com
> <javascript:_e(%7B%7D,'cvml','ken.tan...@gmail.com');>> wrote:
> >>
> >> Hi.  Is there a way with to_char to suppress a decimal point, like a
> leading or trailing 0, so that integers will not have them, but non-ints
> will?  I'm hoping I'm missing something easy.  Thanks.
> >>
> >> Ken
> >>
> >> SELECT val,to_char(val::decimal(6,2),'FM999,999D99') FROM
> >> ( SELECT 1 AS val UNION SELECT 1.05 AS val) foo;
> >>
> >>  val  | to_char
> >> ------+---------
> >>     1 | 1.
> >>  1.05 | 1.05
> >>
> >>
> >
> > Not seeing a native way to do so - and I'd question doing so as a
> general rule - though you know your domain.  If you must have this you will
> want to utilize regexp_replace to identify the situation and replace it.  A
> simple "\.$" check and a substring would work also.
> >
> > David J.
>
> Thanks David. Just curious what part of this you would question.  The case
> for numbers, currency in particular, coming out with a decimal and pennies
> when present, and as whole dollars when not (and without a decimal place at
> the end) seems pretty common and clear cut.  What am I missing in your
> question?
>

Typically if I'm going to format any currency amount with pennies I would
format all values, even those with zero pennies, to the same precision.
Typically when displaying such amounts I'd right-justify the values and
thus cause the decimals to line up.

David J.

Reply via email to