On 8 March 2012 03:28, Marcos Douglas wrote: > > Integer math... what did you mean?
Over the years we have experience many problems with currency, floating point and date/time calculations and storage. So we tweaked our software to handle such data slightly different. If a user enters and amount of 1500.25, it is immediately converted to a Integer as 150025. We have a global project wide setting that set the amount of decimals to support - default being 2. So then all calculations and comparisons (which is a big issue in floating point values) are done with Integer types. It is stored in the database as an Integer as well. But when it is displayed anywhere to the user, it is reformatted with decimals (for the display only). Similar thing with dates. We always store it as a string using the ISO 8601 [ http://www.cl.cam.ac.uk/~mgk25/iso-time.html ] format. This way, no matter the database being used (MS SQL Server, Firebird, Oracle etc.) with their various timestamp field types, or what locale the database server used for that specific database (which affects the timestamp field type storage format), we always know the format the date and time is stored in. When the data is loaded we have a ISO_to_DateTime() routine (and the reverse when stored) that converts it to a TDateTime in memory. Displaying of the date/time to the end user can be configure by the end-user (or application or system wide). Because the date/time is always in yyyymmddThhmmss format, even SQL working directly with the date/time fields can still do comparisons like is one date larger that the other. Since we have used these two methods (for the past 5 years) in our projects, we have just about eliminated all issues we previous had with currency, float and timestamp data. And as was mentioned, rounding and comparisons are major issues with floating point data, and non-existent in Integer data. -- Regards, - Graeme - _______________________________________________ fpGUI - a cross-platform Free Pascal GUI toolkit http://fpgui.sourceforge.net _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal