Для базового 32-разрядного двоичного числа с плавающей точкой IEEE-754 наибольшее представимое нечетное целое число составляет 2 24 -1.
Для базового 64-разрядного двоичного числа с плавающей точкой IEEE-754 наибольшее представимое нечетное целое число равно 2 53 -1.
Это связано с тем, что форматы имеют 24-битные и 53-битные значения. (Значение и является дробной частью числа с плавающей запятой.)
Значения, представленные битами в значениии, масштабируются в соответствии с показателем числа с плавающей запятой. Чтобы представить нечетное число, число с плавающей запятой должно иметь бит в значении, который представляет 2 0 . С 24-битным значением, а если младший бит представляет 2 0 , то старший бит представляет 2 23 . Наибольшее значение получается, когда все биты включены, что составляет значение 2 0 + 2 1 + 2 2 +… 2 23 , что равно 2 24 -1.
В общем случае наибольшее представимое нечетное целое число обычно составляет scalbnf(1, FLT_MANT_DIG) - 1
. Это также может быть вычислено как (2 - FLT_EPSILON) / FLT_EPSILON
. (Обычным случаем является то, что FLT_RADIX
является четным, а FLT_MANT_DIG <= FLT_MAX_EXP
. Обратите внимание, что если FLT_MANT_DIG == FLT_MAX_EXP
, последнее выражение с FLT_EPSILON
должно использоваться, так как первое переполняется.)
ненормальные случаи, просто для полноты:
- Если
FLT_RADIX
нечетно и FLT_MANT_DIG <= FLT_MAX_EXP
, наибольшее представимое нечетное целое число равно FLT_MAX
, если FLT_MANT_DIG
нечетно и FLT_MAX - scalbnf(FLT_EPSILON, FLT_MAX_EXP+1)
в противном случае.
- Если
FLT_RADIX
четное и FLT_MANT_DIG > FLT_MAX_EXP
, то: Если FLT_MAX_EXP > 0
, наибольшее представимое нечетное целое число равно floorf(FLT_MAX)
. В противном случае нечетные нечетные целые числа представимы.
- Если
FLT_RADIX
нечетно и FLT_MANT_DIG > FLT_MAX_EXP
, то: Если FLT_MAX_EXP > 0
, наибольшее представимое нечетное целое число равно floorf(FLT_MAX)
, если FLT_MANT_DIG - FLT_MAX_EXP
нечетно или floorf(FLT_MAX)-1
в противном случае. В противном случае никакие нечетные целые числа представимы.