Показать сообщение отдельно
Старый 02.02.2011, 14:17   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,719 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от 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;

}