According to the Oak language spec, the format of floating point literals were:
- 2.0d or 2.0D double
- 2.0f or 2.0F or 2.0 float
but this changed to the familiar Java way by Java version 1.0
A floating-point literal is of type float if it is suffixed with an ASCII letter F or f; otherwise its type is double and it can optionally be suffixed with an ASCII letter D or d.
The change was perhaps made to make it consistent with C-like languages, where the lack of suffix means a double.
So the d
appears to be an historical relic; although, in the linked version of the Oak spec (which is “preliminary”), there is a margin note saying that NaN isn’t implemented yet. Perhaps it was implemented in a slightly later version, and has remained the same forever after.
(Props to Mark Rotteveel for the nudge to look up the Oak language spec).