Movement against float.init being nan

Hipreme msnmancini at hotmail.com
Fri Aug 19 13:42:58 UTC 2022


As someone coming from Java to use D, I find it myself quite 
annoying that float and double are initialized to `nan`.

This is really bad, it is hard to detect for newcomers, there is 
no flag by default to throw an exception when some operation on 
nan is done. It can be misleading if you're not paying a lot of 
attention to what you're doing.

What I suggest is what any sane people would: use 0 as the start 
for float and double. 0 is the most common sense as a starting 
point for everything, and, there are 2 options we could go:


1: Emit a compilation error that every variable must be 
initialized (I thought D were trying to avoid runtime errors)
2: 0 init all types, so, none is actually invalid before use


Even `char` took me as surprise to know it actually starts as 
0xff, I lost a bit of time trying to find that bug because it is 
so common that variables init as zero.

Although the `char` is a bit different beast in terms of breaking 
change, I really *can't see* anyone actually depending that your 
float is being initialized with `nan`, so I really would like to 
know how much people agree with this idea. It is so common to 
stumble on that problem that it is starting to feel as a real 
mistake.


More information about the Digitalmars-d mailing list