From af5a200a68ed12efec4b29b57fa22c632aaf91fa Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Thu, 19 Jun 2008 19:01:31 +0200 Subject: Fix number parsing. --- MLKDoubleFloat.m | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'MLKDoubleFloat.m') diff --git a/MLKDoubleFloat.m b/MLKDoubleFloat.m index 98daa09..e3cb94d 100644 --- a/MLKDoubleFloat.m +++ b/MLKDoubleFloat.m @@ -16,12 +16,16 @@ * along with this program. If not, see . */ +#define _XOPEN_SOURCE 600 // strtof (not actually needed here) + #import "MLKSingleFloat.h" #import "MLKDoubleFloat.h" #import #include +#include +#include @implementation MLKDoubleFloat @@ -32,6 +36,13 @@ exponentNegative:(BOOL)exponentNegative { self = [super init]; + char *locale; + + // FIXME: This is probably not thread-safe. + locale = setlocale (LC_NUMERIC, NULL); + setlocale (LC_NUMERIC, "C"); + + // strtod or sscanf -- is there a difference? sscanf ([[NSString stringWithFormat:@"%c%@.%@e%c%@", (negative ? '-' : '+'), intPart, @@ -41,6 +52,9 @@ UTF8String], "%lf", &value); + + setlocale (LC_NUMERIC, locale); + return self; } @@ -117,4 +131,9 @@ return [NSString stringWithFormat:@"%@d0",str]; } + +-(NSString *) descriptionForLisp +{ + return [self description]; +} @end -- cgit v1.2.3