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