Systemy liczbowe i konwersja na Float ( Visual C++ )

0

Witam

napisałem sobie taką funkcję:

float CenaNetto(String^ cenaBrutto, ComboBox^ cb)
		{
		    return float::Parse(cenaBrutto)*float::Parse(cb->Text)/100;
		} 

Niby ok, ale cyfry są po przecinku a ja koniecznie potrzebuje po kropce i kończą mi się pomysły. Na google właśnie znalzłem Parsowanie do float-a, ale dalej mam to samo ( sprawdzam to po konwersji do stringa i wyświetlanie w MessageBox ) jeżeli chodzi o sam wynik to w pamięci jest on przechowywany po kropce ( czyli poprawnie ).

0

float::Parse używa domyślnego locale (masz ustawione w systemie polski, więc stosowany jest przecinek).
Wystarczyło popatrzeć do dokumentacji, a tam są opisane przeładowane funkcje float::Parse, przeczytaj i wybierz tą, która ci najlepiej pasuje.
Zapewne powinieneś popatrzeć na przykład dla http://msdn.microsoft.com/pl-pl/library/bh4863by.aspx

2

Niby ok
Nie jest okej, bo zrobiłeś funkcję która przyjmuje stringa i comboboksa, a zwraca floata. Trochę bez sensu.

Rozdziel działania na liczbach od parsowania danych do innych funkcji.

float CenaNetto(float cenaBrutto, float procentPodatku)
{
    return cenaBrutto*procentPodatku/100;
}

Czy co to miało robić. (netto i brutto wydają mi się odwrotnie)

Samo parsowanie działa tak:

    // to używa formatu aktualnie ustawionego w systemie (zakładam że przecinek)
    float f = Single::Parse("3,14");

    // to wymusza użycie kropki
    float g = Single::Parse("3.14", CultureInfo::InvariantCulture);

    // to wymusza użycie ustawień polskich (czyli przecinka) niezależnie od systemu
    CultureInfo ^pl = gcnew CultureInfo("pl-PL");
    float h = Single::Parse("3,14", pl);
0

Dziękuję dokumentacje poczytam i dzięki wam już wiem więcej.

Pozdrawiam serdecznie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1