Prosty problem z float

0

Witam, mam trywialny problem z floatem ale nie potrafię go rozwiązać, mianowicie mam liczbę 50.0742751 w stringu, konwertuję ją funkcją

float to_float(string txt)
{
    float f;
    istringstream iss(txt);
    iss >> f;
	
    return f;
}

do float'a, jednak ucina mi kilka cyfr i zaokrągla. Zostaje: 50.0743

Jest jakiś dłuższy typ? Albo zmienienie zasięgu zaokrąglania? lond double nie pomagają.

PS dodam że jak ręcznie przypisuje do zmiennej taką długą liczbę to także ucina.

0

Działa jak powinno: http://ideone.com/VdpaI masz problem z wyświetlaniem.

W liczbie pojedynczej precyzji dokładnych będzie najwyżej 9 cyfr znaczących więc ta Twoja raczej nie będzie dokładna.

0

Nie nie nie chodzi o precision. Precision działa tylko przy wyświetlaniu, jak sobię ustawię precision to też będę miał całą liczbę. Ja chcę móc potem jeszcze tej zmiennej używać i nie mogę jej zaokrąglać bo to jest do nawigacji i tam taka liczba 7 po przecinku to dobre kilka metrów

0

Ech. Przecież mówię, że ona nie jest zaokrąglana. Twój float nie jest 50.0743 tylko 50.074275. Chciałbyś żeby był 50.0742751 ale to niemożliwe bo float jest za mało dokładny. Zainteresuj się double.

0

Dobule uzywałem, to samo jest. Chodzi o to że ta liczba w zmiennej jest taka jak chciałem i w arytmetyce tych liczb też będzie z tymi 7 po przecinku tylko po prostu komp nie potrafi tak dłuugiej liczby wyświetlić normalnie bez precisionów tak?

1
MateuszS napisał(a):

Chodzi o to że ta liczba w zmiennej jest taka jak chciałem i w arytmetyce tych liczb też będzie z tymi 7 po przecinku

Tak. Nie będzie jednak dokładnie taka jak wpisałeś w stringu.

MateuszS napisał(a):

tylko po prostu komp nie potrafi tak dłuugiej liczby wyświetlić normalnie bez precisionów tak?

To nie jest kwestia umiejętności, po prostu taka jest domyślnie długość. float ma maksymalnie 9 cyfr znaczących, a Tobie domyślnie wyświetla 6.

0

JAk pozamieniam na double/long double będę miał tę precyzję mimo że nie będzie widać pełnej liczby? Muszę osiągnąć taką dokładność (programy nawigacyjne jakoś osiągają)

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