floats default to NaN... why?

F i L witte2008 at gmail.com
Sat Apr 14 10:05:01 PDT 2012


On Saturday, 14 April 2012 at 15:35:13 UTC, Andrej Mitrovic wrote:
> On 4/14/12, F i L <witte2008 at gmail.com> wrote:
>> This is exactly what I'm trying to get at.
>
> Anyway it's not all bad news since we can use a workaround:
>
> struct Float {
>     float payload = 0.0;
>     alias payload this;
> }
>
> void main() {
>     Float x;  // acts as a float, is initialized to 0.0
> }
>
> Not pretty, but it comes in handy.

Lol, that's kinda an interesting idea:

     struct var(T, T def) {
         T payload = def;
         alias payload this;
     }

     alias var!(float,  0.0f) Float;
     alias var!(double, 0.0)  Double;
     alias var!(real,   0.0)  Real;
     alias var!(char,   ' ')  Char;

     void main() {
         Float f;
         assert(f == 0.0f);
     }

a Hack though, since it doesn't work with 'auto'. I still think 
it should be the other way around, and this should be used to 
Default to NaN.


More information about the Digitalmars-d-learn mailing list