Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Sumo 26.09.2003 01:42 / 26.09.2003 01:44
Ибо согласно документации должно быть:При преобразовании вещественного числа к целому производится округление.В модуле pa_string.C для преобразования применяется стандартная функция strtol, а она не производит никаких округлений - сразу выдает ошибку, как встречает в строке точку.
int String::as_int() const { int result; const char *str=cstr(); while(*str && isspace(*str)) str++; if(!*str) return 0; char *error_pos; // 0xABC if(str[0]=='0') if(str[1]=='x' || str[1]=='X') result=(int)(unsigned long)strtol(str, &error_pos, 0); else result=(int)round(strtod(str+1/*skip leading 0*/, &error_pos)); else result=(int)round(strtod(str, &error_pos)); while(char c=*error_pos++) if(!isspace(c)) throw Exception("number.format", this, "invalid number (int)"); return result; }