Hello Andrew,

I tried to call the GLPK library from Java under Debian.

I received the following error:
transp.mod:58: d requires numeric data
Context: ...peka 275 ; param d : New-York Chicago Topeka := Seattle 2.51

The problem could be traced back to 

val = strtod("2,1", &endptr);
printf("strtod('2,1') = %f\n", val);
val = strtod("2.1", &endptr);
printf("strtod('2.1') = %f\n", val);

printing

strtod('2,1') = 2,100000
strtod('2.1') = 2,000000

strtod is locale-dependent.
In Germany ',' is the decimal separator.

I found the following description on the net:
The radix character is defined in the program's locale (category
LC_NUMERIC). 
In the POSIX locale, or in a locale where the radix character is not
defined, 
the radix character defaults to a period ('.').

I guess the GLPK library should work whatever locale the main program is
using.

Could you, please, fix function 
int str2num(const char *str, double *_val)
in glplib11.c not to be locale dependent.

The following code could do the trick:

#include <locale.h>
...
struct lconv * lc;
lc = localeconv();
setlocale ( LC_NUMERIC, 'C');
...
setlocale ( LC_NUMERIC, lc->decimal_point);

Best regards

Xypron
-- 
View this message in context: 
http://www.nabble.com/str2num%28%29-is-locale-dependent-tp23687810p23687810.html
Sent from the Gnu - GLPK - Bugs mailing list archive at Nabble.com.



_______________________________________________
Bug-glpk mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-glpk

Reply via email to