Это ошибка в GMP 4.1.2 или я что-то не так делаю? - PullRequest
0 голосов
/ 14 июля 2009

В этот бит кода я передаю строку "kellogs special k" и получаю 1, что означает, что строка является целым числом. Что, черт возьми, я делаю не так? Или это проблема GMP?

#define F(x) mpf_t (x); mpf_init( (x) );

long __stdcall FBIGISINTEGER(BSTR p1) {
    USES_CONVERSION;
    F(n1);
    LPSTR sNum1 = W2A( p1 );
    mpf_set_str( n1, sNum1, 10 );
    return mpf_integer_p( n1 );
}

Кстати, если кто-нибудь собирается предложить более позднюю версию GMP, пожалуйста, не могли бы вы дать мне веб-адрес статической LIB для Windows. ТИА.

1 Ответ

3 голосов
/ 14 июля 2009

Вы должны проверить возвращаемое значение mpf_set_str. Возвращает 0 в случае успеха и -1 в случае неудачи. В этом случае он возвратил бы ошибку, и n1 остался нетронутым. mpf_init инициализировал его нулем, поэтому проверка, является ли ноль целым числом с mpf_integer_p, возвращает true.

...