[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