question intéressante. Un nombre vraiment aléatoire n'aurait pas fonctionné, car il pourrait se situer dans la gamme des valeurs typiques de nombreuses variables, ce qui violerait les meilleures pratiques pour les valeurs de remplissage. C'est pourquoi la meilleure pratique consiste à choisir un nombre extrêmement grand en amplitude absolue, de sorte qu'il ne soit pas en conflit avec la plage dynamique de données valides. J'ai examiné les propriétés de NC_FILL_FLOAT et NC_FILL_DOUBLE une fois et n'ai rien trouvé de trop remarquable à leur sujet. Les placer égaux est logique, car les utilisateurs convertissent souvent entre float et double. Cela laisse donc la question de savoir quelle valeur unique choisir. Le choix optimal, à mon avis, serait le nombre le plus proche de NC_FLOAT_MAX (ou négatif de NC_FLOAT_MAX) qui avait un motif de bits pouvant être compressé. Puisque de nombreux ensembles de données sont remplis de valeurs manquantes, l'utilisation d'un nombre avec de longues chaînes continues de bits identiques permettrait à de tels ensembles de données d'être mieux compressés par la plupart des algorithmes. La compression DEFLATE d'un ensemble de données avec NC_FILL_FLOAT est assez bon, parce que DEFLATE est bon et NC_FILL_FLOAT en binaire est
9.9692099683868690e+36f = 0 1111100 111100000000000000000000
Ils auraient pu choisir un nombre légèrement plus compressible, par exemple,
-2.3509885615147286E-38f = 10000000111111111111111111111111
mais ils didn 't et je suis aussi curieux d'où vient NC_FILL_FLOAT.
ressemble à l'hexagone est '0x7cf00000' (déterminée avec [cette méthode] (http://stackoverflow.com/a/23624284/974555)). – gerrit