summaryrefslogtreecommitdiff
path: root/ext/interbase
diff options
context:
space:
mode:
authorDaniela Mariaschi <daniela@php.net>2002-03-19 15:29:17 +0000
committerDaniela Mariaschi <daniela@php.net>2002-03-19 15:29:17 +0000
commitc3daa1816899f5a5cf8dd632dfe1bb2873e7ac21 (patch)
tree76c730573329ef690724f564c435b94b0f9a23a0 /ext/interbase
parent32a4f35580436c0c7e74499b78f2390ab7fe367b (diff)
downloadphp-git-c3daa1816899f5a5cf8dd632dfe1bb2873e7ac21.tar.gz
fixed floating number incorrectly rendered (as mentioned by giancarlo@niccolai.ws in BUG #14755)
Diffstat (limited to 'ext/interbase')
-rw-r--r--ext/interbase/interbase.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/ext/interbase/interbase.c b/ext/interbase/interbase.c
index 42b4a9905c..aed0db0837 100644
--- a/ext/interbase/interbase.c
+++ b/ext/interbase/interbase.c
@@ -1787,13 +1787,14 @@ static int _php_ibase_var_pval(pval *val, void *data, int type, int len, int sca
val->type = IS_STRING;
if (scale) {
- int i, len;
- char dt[20];
+ int j, f = 1;
double number = (double) ((ISC_INT64) (*((ISC_INT64 *)data)));
-
- number /= - 10 * scale;
+ char dt[20];
+ for (j = 0; j < -scale; j++) {
+ f *= 10;
+ }
sprintf(dt, "%%0.%df", -scale);
- val->value.str.len = sprintf (string_data, dt, number);
+ val->value.str.len = sprintf (string_data, dt, number/f );
} else {
val->value.str.len = sprintf (string_data, "%Ld",
(ISC_INT64) (*((ISC_INT64 *)data)));