"R" suffix for reals

bearophile bearophileHUGS at lycos.com
Sun May 6 18:02:28 PDT 2012


Jonathan M Davis:

> And what is so onerous about having to do 1.0L instead of 1R?

It's not onerous, the purpose of "R" is not to save typing ".0".


> (it would have to be either double or real, and
> apparently it's real).

1.0L is always a real in D.


> We _could_ add R, but I don't really see what it buys us.

Octal literals are deprecated in D because programmers sometimes 
forget about them, or make mistakes adding a leading zero, 
thinking it does nothing as in math, and defining a number 
different from the desired one.

If you write "auto x = 1L;" thinking about defining a real, as 
you define a float with "auto x = 1F;" you are introducing a 
small bug.

Or maybe you initially have written:
auto r = 1.1L;
And later you want to change the number to 1.0 and you fix it 
like this:
auto r = 1L;
Now you have a little bug.

The "R" is more symmetric with "f", it works as "f" for real. 
This makes learning D a bit simpler.

Very often it's better to have literals as much specific as 
possible, otherwise you get situations like the following one, 
what's the problem here (Issue 4703)?

import std.stdio: writeln;
void main() {
     int[] associative_array = [1:2, 3:4, 5:6];
     writeln(associative_array);
}

Bye,
bearophile


More information about the Digitalmars-d mailing list