Konwersja tekstu z Edit do zmiennej typu float

dział ogólny

Konwersja tekstu z Edit do zmiennej typu float

Nowy postprzez simekone » piątek, 12 czerwca 2009, 17:47

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.
Avatar użytkownika
simekone
Bladawiec
Bladawiec
 
Posty: 31
Dołączył(a): środa, 25 marca 2009, 13:27
Podziękował : 1
Otrzymał podziękowań: 0
Kompilator: CodeGear C++ Builder 2009
    NieznanyNieznana

Re: Konwersja tekstu z Edit do zmiennej typu float

Nowy postprzez Cyfrowy Baron » piątek, 12 czerwca 2009, 18:34

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
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4731
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 445
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 3 gości

cron