| Новости | 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;
}