pike.git
/
src
/
operators.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/operators.c:1:
/* || This file is part of Pike. For copyright information see COPYRIGHT. || Pike is distributed under GPL, LGPL and MPL. See the file COPYING || for more information.
-
|| $Id: operators.c,v 1.
248
2009/
06
/
30
21
:
39
:
51
mast
Exp $
+
|| $Id: operators.c,v 1.
249
2009/
07
/
12
11
:
48
:
23
grubba
Exp $
*/ #include "global.h" #include <math.h> #include "interpret.h" #include "svalue.h" #include "multiset.h" #include "mapping.h" #include "array.h" #include "stralloc.h"
pike.git/src/operators.c:474:
} return; default: Pike_error("Cannot cast %s to string.\n", get_name_of_type(sp[-1].type)); case PIKE_T_STRING: return; case T_FLOAT:
+
if (sp[-1].u.float_number < 0) {
+
/* Some libc's have bugs in the handling of large negative floats... */
+
sprintf(buf,"-%.*"PRINTPIKEFLOAT"g",
+
MAX_FLOAT_PREC_LEN, -sp[-1].u.float_number);
+
} else {
sprintf(buf,"%.*"PRINTPIKEFLOAT"g", MAX_FLOAT_PREC_LEN, sp[-1].u.float_number);
-
+
}
/* Ensure that either an exponent or a decimal point gets printed, * since %g can remove both which would make it look like an integer. */ if (!strchr (buf, '.') && !strchr (buf, 'e')) strcat (buf, ".0"); break; case T_INT: sprintf(buf, "%"PRINTPIKEINT"d", sp[-1].u.integer); break; }