In a previous project, I noticed that the price field was being stored as an int, rather than as a float. This is done by multiplying the actual value by 100, the reason being was to avoid running into floating point problems.
Is this a good practice that I should follow or is it unnecessary and only makes the data less transparent?
Interesting question.
I wouldn’t actually choose float in the mysql environment. Too many problems in the past with precision with that datatype.
To me, the choice would be between
intanddecimal(18,4).I’ve seen real world examples integers used to represent floating point values. The internals of JD Edwards datatables all do this. Quantities are typically divided by 10000. While I’m sure it’s faster and smaller in-table, it just means that we’re always having to CAST the ints to a decimal value if we want to do anything with them, especially division.
From a programming perspective, I’d always prefer to work with
decimalfor price ( ormoneyin RDBMSs that support it ).