On Sunday, 25 February 2018 at 06:35:07 UTC, Jonathan M Davis wrote:

It's not printing ints. It's printing doubles. It's just that all of the doubles have nothing to the right of the decimal point, so they don't get printed with a decimal point. If you did something like start with 1.1, then you'd see decimal points, because there would be data to the right of the decimal point. The same thing happens if you do

writeln(1.0);

as opposed to something like

writeln(1.3);


thanks.

But umm.... what happended to the principle of least astonishment?

writeln(1.1); (prints 1.1)
whereas..
writeln(1.0); (prints 1)

I don't get it. Cause it's 'nicer'??

I ended up having to work around this..like this:

-------
void printArray(T)(const ref T[] a) if (isArray!(T[]))
{
    if( isFloatingPoint!T)
        foreach(t; a) writefln("%.1f", t);
    else
        foreach(t; a) writefln("%s", t);

}
-------

Reply via email to