Array
(
)

StrToFloat com decimais igual a zero

Airoosp
   - 03 jan 2006

Boa tarde,


Alguém sabe com fazer para que na hora de converter um valor de uma string igual a 800,00 para float sejam mantidas as decimais 00.
Na hora de fazer a conversão e gravar no banco, somente são mantidas as decimais quando o valor for diferente de zero por exemplo 800,03.
Se o valor for 800,00 será gravado no banco somente 800.
Utilizei a função StrToFloat mas não funcionou. O valor informado faz parte do registro de um arquivo texto que está sendo importado para o banco.

Obrigado

Airton


Edilcimar
   - 03 jan 2006

strtofloatf(numero, ffFixed, 10,2)


Airoosp
   - 03 jan 2006

Obrigado pela informação, qual unit devo acrescentar ao projeto para poder utilizar a função strtofloatf. Utilizo Delphi 6.


Airton


Edilcimar
   - 03 jan 2006

sysutils


Airoosp
   - 03 jan 2006

Esta função não tem na Sysutils do Delphi 6, verifiquei também na unit system e também não tem.
É alguma função desenvolvida a parte?


Edilcimar
   - 03 jan 2006

não, faz parte do delphi, o meu é 7 porém uso isto desde o 4


Airoosp
   - 03 jan 2006

É possível você postar no fórum a função, pois estou procurando na Internet e não encontrei em nenhum site.


Edilcimar
   - 03 jan 2006

ela é parte integrante do delphi, isto abaixo foi tirado do próprio delphi

Converts a floating point value to a string, using a specified Format, Precision, and Digits.

Unit

SysUtils

Category

Floating point conversion routines

Delphi syntax:

function FloatToStrF(Value: Extended; Format: TFloatFormat; Precision, Digits: Integer): string; overload;
function FloatToStrF(Value: Extended; Format: TFloatFormat; Precision, Digits: Integer; const FormatSettings: TFormatSettings
): string; overload;

C++ syntax:

extern PACKAGE AnsiString __fastcall FloatToStrF(Extended Value, TFloatFormat Format, int Precision, int Digits);
extern PACKAGE AnsiString __fastcall FloatToStrF(Extended Value, TFloatFormat Format, int Precision, int Digits, const TFormatSettings FormatSettings);

Description

FloatToStrF converts the floating-point value given by Value to its string representation.

The Value parameter is the value to convert.
The Precision parameter specifies the precision of the given value. It should be 7 or less for values of type Single, 15 or less for values of type Double, and 18 or less for values of type Extended.
The Digits and Format parameters together control how the value is formatted into a string. For details, see the description of TFloatFormat.

If the given value is a NAN (not-a-number), the resulting string is ´NAN´. If the given value is positive infinity, the resulting string is ´INF´. If the given value is negative infinity, the resulting string is ´-INF´.

The first form of FloatToStrF is not thread-safe, because it uses localization information contained in global variables. The second form of FloatToStrF, which is thread-safe, refers to localization information contained in the FormatSettings parameter. Before calling the thread-safe form of FloatToStrF, you must populate FormatSettings with localization information. To populate FormatSettings with a set of default locale values, call GetLocaleFormatSettings.


Airoosp
   - 03 jan 2006

Esta função que você passou não a mesma, você informou StrToFloatF e o descritivo que você passou é da FloatToStrF que faz a conversão de float para string. O que eu preciso é de string para float mantendo as decimais mesmo que sejam iguais a zero.


Edilcimar
   - 03 jan 2006

então desculpe foi um lapso, escrevi invertida!


Airoosp
   - 03 jan 2006

Entendi, mas você conhece alguma forma de manter as decimais para gravação no banco?

Por exemplo:


variavel string = 800,00 ao converter para float para gravação visto que o campo da tabela é number(15,2) o valor passa para 800. Preciso que grave o valor 800,00 .


Edilcimar
   - 03 jan 2006

normalmente nenhum campo flutuante grava zeros à direita, o que vc pode fazer é mostrá-los como se lá existissem