ID: 15151 User updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Open Bug Type: InterBase related Operating System: Windows PHP Version: 4.1.1 New Comment:
This is also reported as #13807 Previous Comments: ------------------------------------------------------------------------ [2002-01-21 13:10:17] [EMAIL PROTECTED] Decimals/Numerics that are stored as 64-bit integers always display as xxx.2. The following should fix the problem: Original code (on or about line 1782): val->value.str.len = sprintf(string_data, "%Ld.%0*Ld", (ISC_INT64) (*((ISC_INT64 *)data) / (int) pow(10.0, (double) -scale)), -scale, (ISC_INT64) abs((int) (*((ISC_INT64 *)data) % (int) pow(10.0, (double) -scale)))); Change to: val->value.str.len = sprintf(string_data, "%Ld", (ISC_INT64) (*((ISC_INT64 *)data) / (int) pow(10.0, (double) -scale))); val->value.str.len += sprintf(string_data + val->value.str.len, ".%0*Ld", -scale, (ISC_INT64) abs((int) (*((ISC_INT64 *)data) % (int) pow(10.0, (double) -scale)))); The problem is with MSVC++. It doesn't seem to like two int64s in the same sprintf statement. I don't yet have all the pieces to compile the extension so I have not fully tested it, but I have duplicated the problem in a test program and verified that the above code fixes the problem in the test program. ------------------------------------------------------------------------ Edit this bug report at http://bugs.php.net/?id=15151&edit=1 -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]