2011-07-25 21 views
5

Dado un valor doble como 1.00500000274996E-8, ¿cómo lo convierto en su formato no científico con un número máximo de dígitos después del punto decimal? En este caso con 8 dígitos, sería 1.00500000?Cómo eliminar el exponente del float formateado en Delphi

La conversión no debe rellenar con ceros, por lo que 2007 saldrá como 2007 y 2012.33 y 2012.33.

He intentado muchas combinaciones usando Formato, FormatoFloo, FloatToStrF pero parece que no puedo llegar al pozo. Muchas gracias por cualquier ayuda.

Editar: Debo aclarar que estoy tratando de convertirlo a una representación de cadena, sin la parte exponente (E).

+1

No, sería 0.0000000. –

+0

Disculpe, eso es correcto, sí. –

Respuesta

7

FormatFloat('0.######################', 1.00500000274996E-8) deberían hacer el truco.

de salida es: 0,0000000100500000274996

No va de salida más dígitos que sea absolutamente necesario.

2

Ver John Herbster's Exact Float to String Routines en CodeCentral. Tal vez no sea exactamente lo que usted está después pero podría ser buen punto de partida ... Descripción del articulo CC:

This module includes 
(a) functions for converting a floating binary point number to its *exact* decimal representation in an AnsiString; 
(b) functions for parsing the floating point types into sign, exponent, and mantissa; and 
(c) function for analyzing a extended float number into its type (zero, normal, infinity, etc.) 

Its intended use is for trouble shooting problems with floating point numbers. 

Sus DecimalRounding rutinas podrían ser de intrest también.

+0

+1 por mencionar el trabajo de John Herbster en este tema. –

Cuestiones relacionadas