Как проверить действительные числа - PullRequest
0 голосов
/ 20 сентября 2019

Мне нужна форма для проверки чисел, где она позволяет пользователю вводить только целые, отрицательные и десятичные значения.есть форма, чтобы сделать это с этим кодом?

Я попытался получить значения с помощью scanf, так как они были строкой символов, а затем, с помощью функции atoi, я преобразовал полученную строку в числовое значение изатем передайте его переменной, проблема в том, что он возвращает ТОЛЬКО все значение, без десятичных знаков, но с отрицательными значениями нет проблем по какой-то причине, это код, который у меня есть сейчас, следующий за кодом ACSII:

do{ //Entry of data
    printf("introduce a real number: ");
    scanf("%s", chain);
    valid=validate_numbers(chain);
}while(valid==0);

N=atoi(chain);

Если, например, я пытаюсь вставить в программу «34,52», она должна вернуть это точное значение переменной N, но вместо этого преобразует строку в «34,00».

https://pastebin.com/J5sk07py вот весь код между прочим.

1 Ответ

4 голосов
/ 20 сентября 2019

i in atoi(3) означает integer.Это означает, что вы конвертируете свою строку в целое число, которое, как вы видите, не имеет дробной части.Используйте strtof(3) или strtod(3), чтобы получить float или double соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...