Thread overview
Output of std.format for float difference between DMD and GDC
Dec 04
BoraxMan
Dec 04
BoraxMan
December 04
I have noted that DMD and GDC provide a different output to the following line of code.

writeln(format("$%-12,3.2f",66543.22));

DMD outputs

$66,543.22

GDC outputs

$66,543.22 ,

As you can see, GDC puts a superflous comma at the end.  The goal of this line is to convert a float to a monetary representation, therefore DMD is what I want and GDC not.

The question is, is the line of code in error?  If not, does this mean there is a bug with GDC's libphobos?

Regards,
Dennis

December 04
On Wednesday, 4 December 2019 at 09:41:58 UTC, BoraxMan wrote:
> I have noted that DMD and GDC provide a different output to the following line of code.
>
> writeln(format("$%-12,3.2f",66543.22));
>
> DMD outputs
>
> $66,543.22
>
> GDC outputs
>
> $66,543.22 ,
>
> As you can see, GDC puts a superflous comma at the end.  The goal of this line is to convert a float to a monetary representation, therefore DMD is what I want and GDC not.
>
> The question is, is the line of code in error?  If not, does this mean there is a bug with GDC's libphobos?
>
> Regards,
> Dennis

I figured it out, its my lack of experience in D.

format("$%-*,3.2f",x.dig,x);

where x is the floating point value works as expected.
December 07
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Wednesday, 4 December 2019 12:16, BoraxMan via D.gnu <d.gnu@puremagic.com> wrote:

> On Wednesday, 4 December 2019 at 09:41:58 UTC, BoraxMan wrote:
>
> > I have noted that DMD and GDC provide a different output to the
> > following line of code.
> > writeln(format("$%-12,3.2f",66543.22));
> > DMD outputs
> > $66,543.22
> > GDC outputs
> > $66,543.22 ,
> > As you can see, GDC puts a superflous comma at the end. The
> > goal of this line is to convert a float to a monetary
> > representation, therefore DMD is what I want and GDC not.
> > The question is, is the line of code in error? If not, does
> > this mean there is a bug with GDC's libphobos?
> > Regards,
> > Dennis
>
> I figured it out, its my lack of experience in D.
>
> format("$%-*,3.2f",x.dig,x);
>
> where x is the floating point value works as expected.


It's a phobos library bug.

https://issues.dlang.org/show_bug.cgi?id=20069


--
Iain