W jaki sposób mogę przekonwertować zmienną float na const char* ?
Zrobiłem coś takiego:
float var = 12.34
(std::to_string(var)).c_str()
i to nawet działa, tylko że w wyniku tej operacji dostaję 21.3400000, a potrzebuję tylko dwie cyfry po przecinku.
liczba zmiennoprzecinkowa nie ma takiej czy innej ilości cyfr po przecinku. Jest po prostu liczbą, w rzeczywistości binarną. Wypadało by odróżniać liczbę od jej widzialnego formatowania na 'outpucie'.
Co więcej, niektóre liczby nie istnieją (problem reprezentacji).
Przykładowa** float 12.34** też** nie istnieje**. jej "bardziej prawdziwa" wartość to 12.3400002 (może jakaś inna platforma wyliczy przykładowo 12.339997).
Niestety wiedza o zmiennym przecinku kiedyś tak podstawowa, jakoś zanikła wśród mas programistycznych. To czasem może skopać pewną część ciała. Jeszcze o ograniczonej dokładności ktoś by sobie coś przypomniał, o problemie reprezentacji nieliczni. Zarówno biblioteki, a zwłaszcza IDE robią MSZ krzywdę jak prezentują liczby zbyt "przyjaźnie" (a fałszywe)
Użyta w innym miejscu liczba to 21.3400002.
Zgadzam się z kolegami, którzy przestrzegają przed c_str() itd, te fragmenty są pełne UB/ błedów... ale mi to dodatkowo pachnie jakimś problemem XY