Where should I look at if I want to switch between float and double precision at compile time. Its like, if user wants everything in float instead of double precision how I
Without knowing exactly how you intent to use the data, it's hard to recommend the correct solution.
Have a look at the union date type.
http://msdn.microsoft.com/en-us/library/5dxy4b7b(v=VS.80).aspx
Templates would also be a viable option depending on the usage.
http://msdn.microsoft.com/en-us/library/y097fkab.aspx