Access's default number storage is in double precision floating point, even for integers and long ints. The only decimal storage it will do is with the Currency data type (4 decimal places). This is always a problem when exporting data from access. Your floats can be affected by the no of decimal places specified for a column in the table design view, or the query design - this affects presentation not storage.
The solution that I use is to create a query to select the data, and use the access string function Cstr(number_col) to convert nos to strings in decimal format. I also wrote a function to convert dates to mysql format at the same time. It makes it all a lot easier when importing into mysql.
eg, access query from a webload app of mine
SELECT tblPayments.PaymentID, tblPayments.DebtID, tblPayments.PayType, mysqldate([tblPayments].[DateIn]) AS DateIn, CStr([tblPayments].[AmtPay]) AS AmtPay, Trim([tblCurrencyCodes].[Print]) AS Curr, tblPayments.User INTO tblLoadPays
FROM tblPayments INNER JOIN tblCurrencyCodes ON tblPayments.Currency = tblCurrencyCodes.Currency
WHERE (((tblPayments.WebLoad)=True) AND ((tblPayments.AmtPay)>0));
You can do the same with php, but then you have to process each row instead of being able to use load data infile or the like.