iota to array
rumbu
rumbu at rumbu.ro
Sun Feb 25 15:28:42 UTC 2018
On Sunday, 25 February 2018 at 13:33:07 UTC, psychoticRabbit
wrote:
> can someone please design a language that does what I tell it!
>
> please!!
>
> is that so hard??
>
> print 1.0 does not mean go and print 1 .. it means go and print
> 1.0
>
> languages are too much like people.. always thinking for
> themselves.
>
> I fed up!
>
> fed up I say!
That's in fact a data representation problem not a language
problem. In C#, if you are using a *decimal* data type, it prints
as expected:
decimal one = 1m; //internally represented as 10^^0
decimal one2 = 1.0m; //internally represented as 10^^-1
decimal one3 = 1.00m; //internally represented as 100^^-2
//one == one2 == one3, but the output is different:
Console.WriteLine(one); //outputs 1
Console.WriteLine(one2); //outputs 1.0
Console.WriteLine(one3); //outputs 1.00
Nor Java and nor D have any built-in decimal type, therefore the
internal representation of floating point values is always double
(or float, or real). Double has a unique representation for 1,
1.0 or 1.00 and it's always 2^^0. How the writeln/println
functions outputs 2^0, it's a design decision. Since D is
inheriting C concepts (including printf), it will use the %g
format as in C. I'm not a Java fan, therefore I don't know what
was behind the decision of the language creators to output
floating point values with at least one decimal digit.
More information about the Digitalmars-d-learn
mailing list