# What is the difference between 32 Bit Float and 32 Bit fixed pixel types?

### Question

I am using a real time graphics program that offers the following "pixel formats".

I understand many of them but one thing I do not understand is the difference between `float`

and `fixed`

.

Why would someone use one over the other? They both take up the same amount of space so I do not see how one could offer more precision.

### Popular Answer

So basically, "float" means that it stores a significand and a base exponent. A "standard" 32-bit float uses 1 bit for sign, 8 bits for exponent and 23 bits for signifcand. The key here is that the scale (the exponent) is stored with the number.

"Fixed" is stored hi-word/low-word "packed". A 32-bit fixed point is *probably* going to be a 16 bit integer before the radix and 16-bit integer after (the decimal part). This does not comport with @elegent's comment about a range between 0 and 1: that link may be implementation specific, I don't know. It sounds to me like that implementation uses all 32 bits for the decimal portion and then relies on context for scale (the exponent) or that they are leveraging a color-model (likely) that uses the same range.

Regarding precision: the number of bits available does not equate to better precision on its own, but I am completely unqualified to speak about the distinctions beyond the obvious overflow/underflow issues.

https://stackoverflow.com/questions/8638792/how-to-convert-packed-integer-16-16-fixed-point-to-float

https://stackoverflow.com/questions/7524838/fixed-point-vs-floating-point-number

In the context of your screen-capped menu: they are using fixed as a synonym for integer: 8-bit fixed (rgba), means 8-bits per pixel, where each byte is represents an integer value between 0 and 255.