Strona 1 z 1

Konwersja tekstu z Edit do zmiennej typu float

Nowy postNapisane: piątek, 12 czerwca 2009, 17:47
przez simekone
Mam problem z konwersją tekstu z Edit do zmiennej typu float.

Do tej pory używałem:
Kod: Zaznacz cały
a = Edit->Text.ToInt();

Teraz zmienna "a" jest zmienną typu float nie int, a funkcji ToFloat() niestety nie ma.
Chodzi o to, aby liczba z przecinkiem była przypisywana do tej zmiennej.

Re: Konwersja tekstu z Edit do zmiennej typu float

Nowy postNapisane: piątek, 12 czerwca 2009, 18:34
przez Cyfrowy Baron
typ float jest podobny do typu double, więc można tak:

Kod: Zaznacz cały
float a = Edit1->Text.ToDouble();


istnieje też sposób na konwersję do float:

Kod: Zaznacz cały
float a = StrToFloat(Edit1->Text);


w obydwu przypadkach jeżeli Edit nie zawiera liczby zostanie zwrócony wyjątek, można to obejść używając funkcji StrToFloatDef(AnsiString S, long double Default), która w przypadku, gdy nie można dokonać konwersji zwraca wartość domyślną określoną w drugim argumencie funkcji:


Kod: Zaznacz cały
float a = StrToFloatDef(Edit1->Text, 0.0);


należy pamiętać o tym, że w przypadku zmiennych zmiennopozycyjnych (ułamków) podając wartości tych zmiennych w kodzie używamy jako separatora kropki, podczas gdy w gotowym programie podając wartość w obiekcie np. Edit1 jako separatora używamy przecinka.
W kodzie zawsze musisz używać jako separatora dziesiętnego kropki, lecz w przypadku gotowego programu możesz zdefiniować jaki ma być separator w trzecim argumencie funkcji wymuszając np. użycie kropki zamiast przecinka:

Kod: Zaznacz cały
TFormatSettings fSet;
fSet.DecimalSeparator = '.';
float a = StrToFloatDef(Edit1->Text, 0.0, fSet);


pamiętaj, że zmienna float może osiągnąć maksymalna wartość 999999.96, powyżej tej wartości nie będzie juz pokazywać wartości dziesiętnej, lecz wartość będzie zaokrąglana do całości, dla większych wartości lepiej skorzystać ze zmiennej double, która daje wartości dziesiętne przy maksymalnej wartości 99999999999999.94.



► patrz serwis: Cyfrowy Baron dział: porady -> zmienne