Moim zdaniem nie jest to problem z debuger'em, ale kwestia samej reprezentacji liczb zmiennoprzecinkowych w systemach cyfrowych. Nie można dokładnie przedstawić liczby 3.1 w sposób binarny, a jedynie jej dobre przybliżenie (11.0(0011)) w ten właśnie sposób, że po powtórnej konwersji otrzymamy 3.0(9).
Dla sprawdzenia polecam taki konwerter online:
http://baseconvert.comWprowadzając w pole "Binary" liczbę 11.00011, a później kolejno systematycznie dodając sekwencje 0011, zobaczymy w polu "Decimal" odpowiednik rzeczywistej wartości dziesiętnej. Spróbuj tak kombinować z bitami, aby uzyskać równo 3.1... niemożliwe?
Pomijam tutaj zaokrąglenie samego konwertera, który dla odpowiednio długiej sekwencji po prostu zaokrągla liczbę
Dla float:
http://www.binaryconvert.com/result_flo ... =051046049Większą dokładność można uzyskać przy typach double (podwójnej precyzji):
http://www.binaryconvert.com/result_dou ... =051046049