PRB: gcvt() Generates Exponential Notation for 0.0x (37794)



The information in this article applies to:

  • The C Run-Time (CRT), when used with:
    • Microsoft Visual C++ for Windows, 16-bit edition 1.0
    • Microsoft Visual C++ for Windows, 16-bit edition 1.5
    • Microsoft Visual C++, 32-bit Editions 1.0
    • Microsoft Visual C++, 32-bit Editions 2.0
    • Microsoft Visual C++, 32-bit Editions 4.0
    • Microsoft Visual C++, 32-bit Editions 5.0
    • Microsoft Visual C++, 32-bit Editions 6.0

This article was previously published under Q37794

SYMPTOMS

The gcvt() function returns a value in scientific notation, without regard to the specified precision, when the floating-point value has the form "0.0<x>" and <x> is any sequence of digits.

CAUSE

This is expected behavior for gcvt().

RESOLUTION

If this behavior is not desired, use the fcvt() function to convert the floating-point number to a string.

MORE INFORMATION

The following code demonstrates this behavior:

Sample Code

/*
 * Compile options needed: None
 */ 

#include <stdio.h>
#include <stdlib.h>

char buffer[50];
int precision = 20;

void main(void)
{
   gcvt(-0.1123, precision, buffer);    /* Decimal output */ 
   printf("buffer ........\"%s\"\n", buffer);

   gcvt(-0.0123, precision, buffer);    /* Scientific notation */ 
   printf("buffer ........\"%s\"\n", buffer);
}
				

Modification Type:MajorLast Reviewed:12/12/2003
Keywords:kbCRT kbprb KB37794