1) Yeah, you can tell the BinaryReader what encoding to use with the System.Text.Encoding class.
BinaryReader reader = new BinaryReader( stream, Encoding.BigEndianUnicode );
2) No, but you can use the System.BitConverter class to turn an array of bytes into whatever type it supports. And it supports both single and double precision floating point conversions.
The truth does not change according to our ability to stomach it.