float f = (float)numeric_limits<double>::infinity();
Questo è garantito per impostare f
all'infinito se la vostra piattaforma di compilation offre IEEE 754 aritmetica per i calcoli in virgola mobile (di solito lo fa).
Oppure, provate a lanciare qualcosa di più grande del float max in un float, sono sicuro di finire all'infinito?
No. Nella predefinito IEEE 754 round-a-nearest mode, alcuni valori double
superiori al massimo finita float
(cioè, FLT_MAX
) convertire in FLT_MAX
. Il limite esatto è il numero a metà tra FLT_MAX
(0x1.fffffep127
in rappresentazione esadecimale C99) e il numero successivo float
che potrebbe essere rappresentato se l'esponente nel formato a precisione singola avesse un intervallo più ampio, 0x2.0p128
. Il limite è quindi 0x1.ffffffp127
o circa 3.4028235677973366e + 38 in decimale.
fonte
2013-07-19 16:32:41
In modalità round to to-close con aritmetica IEEE 754 (che sono comuni). –
Nel linguaggio di questa risposta, un "piccolo" è 536 milioni, 870 mila, 911. –