lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]



On Nov 21, 2003, at 14:54, José dos Santos Machado wrote:

Lua can bring out problems with the implementation of strtod, for converting from a printed decimal form to the internal floating point representation, and printf, for converting from floating point to printed form, on some platforms. Basically some platforms get the wrong answers even for apparently simple cases like strtod("113") or printf("%17d", 14). There is no excuse for this (it's the fault of the provider of the system C libaries usually) but it can be hard for users to do anything about it.

I'm having these problems with my PalmOS port of Lua5. I've started from the scratch again due to lack of the standard libs on PalmOS. Now, with a newer IDE (cw9), and a few newer routines, I'd like to compensate these errors on strtod and printf, although I don't know the lua source very well to know where to change it. I've tried to put the project on the sf.net without success (I'm a little lost with that sf.net "cvs-with-putty" thing). Does anybody have a clue to what files on the Lua5 source do I have to change to add these number support ?

It turns out that lua is very well organised to do this. Number to string and string to number conversion is handled by two macros

lua_str2number defined in the file lobject.c

lua_number2str defined in the file lvm.c

Both of these can be redefined. Now all you need is good quality functions that do these conversion on PalmOS. Perhaps you have that base already covered? I believe the glibc functions to be adequate.

David Jones