It's perfectly reasonable to want to encode a float into an A8R8G8B8 texture. A lot of older hardware doesn't support floating point textures, and moderately old hardware is really slow when using them. Lets take an example - say I want to encode 98742/216236 with 24 bits of precision into X8R8G8B8. Random numbers I came up with by mashing on the keyboard. Well, 98742/216236 = 0.428892506335670286