[Comm] c language question

Andrey Rybak =?iso-8859-1?q?ra_=CE=C1_iop=2Ekiev=2Eua?=
Сб Ноя 4 19:14:24 MSK 2006


Привет, коммунити!
Извините за оффтоп.
Стоит задача (стандартная должно быть) преобразовывать строки  вида
"0.ab" в целое число ab.
Вероятно, я плохо понимаю Си , но самый прямой метод будет выглядеть так:
      1 #include<stdio.h>
      2 #include<stdlib.h>
      3 int main(){
      4         const char* a = "0.16";
      5         printf("%d",(int)(100*atof(a)));
      6         return 0;
      7 }
Но вся беда в том, что это не всегда работает. Например atof запросто
может вернуть 0.159999... в приведенном примере, а приведение типа (int)
просто отбрасывает дробную часть и результат налицо: "0.16"
преобразуется в целое 15.
Проблема наверняка стара как сам Си. Кто знает, как классики решают
подобные задачи?



Подробная информация о списке рассылки community