diff options
| author | Daniela Mariaschi <daniela@php.net> | 2002-03-19 15:29:17 +0000 |
|---|---|---|
| committer | Daniela Mariaschi <daniela@php.net> | 2002-03-19 15:29:17 +0000 |
| commit | c3daa1816899f5a5cf8dd632dfe1bb2873e7ac21 (patch) | |
| tree | 76c730573329ef690724f564c435b94b0f9a23a0 /ext/interbase | |
| parent | 32a4f35580436c0c7e74499b78f2390ab7fe367b (diff) | |
| download | php-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.c | 11 |
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))); |
