In a banking organization, why would account balance be declared as varchar and not decimal?
We do this in our data warehouse. It's because decimal has a fixed precision and float isn't accurate past a certain number of decimal places. We need to retain the most accurate value extracted from the source as we are summing over 100 million rows and the rounding would put our figures out. However if you've got a fixed number of decimal places, then go for a decimal datatype or similar.