Цитата:
Сообщение от
otkudao
Суть вопроса: str2int отрабатывает некорректно.
Для корректной работы функций str2num() достаточно чтобы у символьного представления числа не было разделителей тысяч и разделителем целой и дробной части выступала точка.
Другими словами необходимо:
1. Удалить символы-разделители тысяч
2. Установить в качестве разделителя целой и дробной части точку
X++:
static void JOB_test(Args _args)
{
str strSeparators;
str strThousend;
str strPoint;
str strNumber = strFmt("%1",123456789.01);
real realNumber;
;
print "Исходная строка = ", strNumber;
// Символы-разделители
strSeparators = strRem(strFmt("%1",1111.11),"1");
// Разделитель целой и дробной части
strPoint = subStr(strSeparators, strLen(strSeparators),1);
// Разделитель тысяч
strThousend = strRem(strSeparators, strPoint);
// Удаляем разделитель тысяч
strNumber = strRem(strNumber, strThousend);
// Заменяем разделитель целой и дробной части на точку
//strNumber = global::strReplace(strNumber, strPoint, ".");
strNumber = strPoke(strNumber,".",strFind(strNumber, strPoint, 1, strLen(strNumber)));
// Собственно преобразование
realNumber = str2num(strNumber);
print "После преобразования = ", strNumber;
print "Первод в число = ", realNumber;
pause;
}