From: David McGlone
>On Thursday 06 May 2010 07:19:48 Paul Waring wrote:
>> David Otton wrote:
>> > On 6 May 2010 11:52, Paul Waring <> wrote:
>> >> If I was designing the system from scratch, that's what I'd do.
>> >> Unfortunately this is an add-on to a legacy system where currency
>> >> are already stored as strings in the database (yes, not ideal I
>> >> but you have to work with what you've got).
>> >
>> > I don't know much about your situation, but it does sound like you
>> > need to fix the root problem. I'd use a decimal type, and lean on
>> > database to do the maths.
>> As I said, unfortunately it's a legacy system, so I can't just change
>> the database to use a different type (there are dozens of columns set
>> like this, with thousands of values already set).
> Would It be possible to write a script to extract everything from that

> database and insert it into a database with the correct columns and
> then all you would need to do is change the db connection information.

If the data is really stored in strings, you need to break it down into
substrings around the decimal and then convert both sides into integers
and combine them into an integer value. It is the conversion into float
that introduces the error because of the imprecise representation of
fractional decimal values in binary.

Bob McConnell

PHP General Mailing List (
To unsubscribe, visit:

Reply via email to