Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dontgiveafk
36 / 16 / 0
Регистрация: 29.01.2010
Сообщений: 252
#1

Ввод 0 с помощью scanf и правильное сравнение с 0 - C++

08.12.2010, 19:43. Просмотров 793. Ответов 4
Метки нет (Все метки)

считываю данные в переменную double t; scanf("%f",&t); переменная типа double , а не float, но как я понимаю visual studio компилятору на это плевать если написать float t; scanf("%f",&t); или double t; scanf("%d",t); получаю если ввожу 0 на выходе t=1.5562361260361986e-303 я так понял, что это машинный ноль. Пытаюсь сделать сравнение t>0.0 && t<0.5 получаю false как так ведь этщ число лежит в этих пределах. Как мне правильно сравнить это число с настоящим 0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2010, 19:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ввод 0 с помощью scanf и правильное сравнение с 0 (C++):

Файловый ввод/вывод с использованием scanf(); - C++
Дан текстовый файл с числами. Следует заполнить массив int arr; числами из файла input.txt. Для этого требуется использовать scanf();...

Ограничение на ввод символов scanf() и cin - C++
Здравствуйте. Возможно ли ограничить ввод символов после вызова scanf() или cin? Нужно чтоб после вызова этих функций пользователь...

Ввод/вывод через printf() и scanf() - C++
Как правильно заменить вывод и ввод с cout/cin на printf() и scanf()? #include &lt;string.h&gt; #include &lt;iostream&gt; #include &lt;string&gt; ...

Запись/чтение полей классов с помощью scanf/printf - C++
Привет всем! На прошлой неделе начали учить С++,и из за того что мы параллельно учим Си - учитель сказал что нам лучше использовать...

Считывание символа с помощью функции scanf: найти и исправить ошибку в коде - C++
Hello, world! Столкнулся с такой проблемой, как считывание символа с помощью функции scanf. Выкладываю два кода. Один исполняется...

Ввод строки в структуре, заданной как char *str через scanf (ПОМОЩЬ) - C++
struct {char *str;} A; scanf(&quot;%s&quot;, &amp;A.str); Аварийное завершение программы после ввода. Если задавать вручную значение внутри...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kastaneda
Форумчанин
Эксперт С++
4652 / 2860 / 228
Регистрация: 12.12.2009
Сообщений: 7,268
Записей в блоге: 2
Завершенные тесты: 1
08.12.2010, 20:06 #2
Может вводить 0.0 ? Хотя странно, не разу с таким не сталкивался.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
08.12.2010, 20:20 #3
Цитата Сообщение от dontgiveafk Посмотреть сообщение
или double t; scanf("%d",t);
"%d" -это для int

Добавлено через 27 секунд
для double - "%f"
Kastaneda
Форумчанин
Эксперт С++
4652 / 2860 / 228
Регистрация: 12.12.2009
Сообщений: 7,268
Записей в блоге: 2
Завершенные тесты: 1
08.12.2010, 20:25 #4
Да, я сразу обратил на это внимание, но значение этому не придал. Сейчас читаю книгу по фортрану, там написанно, что при преобразовании из целочисленного типа в вещественный тоже происходит потеря точности (я в сишной лит-ре такого не встречал, и думал, что потеря точность может быть только при преобразовании из вещественного типа в целочисленый). Так вот - результат t=1.5562361260361986e-303 очень похож на ту самую потерю точности. Происходит это потому, что считывается целочисленный ноль, а потом преобразовывается в вещественный.
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
08.12.2010, 22:20 #5
Цитата Сообщение от dontgiveafk
scanf("%f",&t); переменная типа double
C
1
    scanf("%lf", &t);
у double и float разные размеры, они по-разному интерпретируются, одна последовательность бит, рассматриваемая в виде float, для double будет вообще другое значение иметь

0 и -0
000... - это ноль
100... - это минус ноль
C
1
2
3
4
5
6
7
#include <stdio.h>
 
int main(void)
{
    printf("%f %f" "\n", 0., -0.);
    return 0;
}
Код
[guest@localhost tests]$ ./t
0.000000 -0.000000
[guest@localhost tests]$
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2010, 22:20
Привет! Вот еще темы с ответами:

Правильное понимание того, как работает ввод вывод в С++ - C++
Начал изучать тему ввода-вывода данных. Сделал схему, посмотрите ее пожалуйста, посмотрите каким образом все взаимосвязано, и скажите...

Тип long long и его ввод\вывод с использованием scanf\printf - C++
Добрый день! Мне в программе надо вывести и ввести, соответственно, некоторые данные с помощью scanf и printf. По сути у меня выглядит...

Ввод выражения с помощью getche() - C++
Доброго времени суток, программеры! Есть вопрос: вот хочу что бы когда пользователь вписывал через пробел число потом знак и снова...

Ввод данных в массив с помощью типизированных констант - C++
Каким образом можно ввести данные в массив с помощью типизированных констант ? Добавлено через 12 минут Собственно само задание


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.12.2010, 22:20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru