KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

Q30880: FIX(N!*10^2) Gives Different Results in .EXE and QB.EXE

Article: Q30880
Product(s): See article
Version(s): 4.00 4.00b 4.50
Operating System(s): MS-DOS
Keyword(s): ENDUSER | buglist4.00 buglist4.00b buglist4.50 B_BasicCom | mspl13_basic
Last Modified: 8-DEC-1989

The following code example using the FIX function produces different
results inside the QB.EXE environment and as an executable EXE file.
Compiling the program with the BC /O compiling option and the debug
(/d) option does not affect the results.

Microsoft has confirmed this to be a problem in QuickBASIC Versions
4.00, 4.00b, and 4.50, and in the Microsoft BASIC Compiler Versions
6.00 and 6.00b for MS-DOS and OS/2 (buglist6.00, buglist6.00b). This
problem has been corrected in the Microsoft BASIC Compiler Version
7.00 (fixlist7.00).

The following code example demonstrates the problem:

   N! = -21
   PRINT FIX(N! * 10 ^ 2)

The following is a workaround for the problem:

   N! = -21
   PRINT FIX(N!) * 10 ^ 2

THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Copyright Microsoft Corporation 1986-2002.