Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 1
Регистрация: 27.05.2013
Сообщений: 39
1

преобразование типов

13.01.2017, 18:45. Показов 519. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помогите решить проблему, например v = 11.11, почему когда я передаю значение в с, то оно становиться 1110

C
1
2
3
4
5
 float v;
    printf("vvedite chislo \n");
    scanf("%2.2f", &v);
    v = v * 100;
    c = v;
Добавлено через 5 минут
c у меня integer
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2017, 18:45
Ответы с готовыми решениями:

Указатели, преобразование их типов
Приветствую всех, прошу помочь разобраться. Факи, статьи, книги копал- ответа на свой вопрос не...

Преобразование типов указателей
Помогите найти ошибку в коде лабораторной работы по Си. Дано задание: Разработать две функции,...

Преобразование типов вручную
Необходимо написать функцию преобразования строки цифр в число. Читал на сайтах, вычитал способ:...

Преобразование типов с переводом в 10 СС
Всем привет. Есть переменная типа char в которой хранится примерно следующее: 1A17, что в 10...

3
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
13.01.2017, 22:44 2
Уберите 2.2 из сканф-а. Оно не будет работать, а отдельные компиляторы матом вас пошлют. Уберите и посмотрите на получившийся результат
0
1 / 1 / 1
Регистрация: 27.05.2013
Сообщений: 39
13.01.2017, 23:32  [ТС] 3
не помогло. все равно с = 1110, вроде все правильно в коде

C
1
2
3
4
5
6
7
8
9
int main()
{
    int a, b, c, i, j, x, y;
    float v;
    printf("vvedite chislo \n");
    scanf("%f", &v);
    c = v * 100;
    b = 100;
    y = 10;
0
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,076
14.01.2017, 04:56 4
Цитата Сообщение от II_Dimit_II Посмотреть сообщение
все равно с = 1110
А почему бы и нет? Чиcло 11.11 в типе float не представимо в принципе. Поэтому в реальности запросто может получится какое-нибудь 11.10999965667724609375. После умножения на 100 и отбрасывания дробной части получаем 1110. Ничего удивительного.

Добавлено через 9 минут
При преобразовании к целому - округляйте вместо тупого отбрасывания дробной части, и результаты будут более "логичными"

C
1
c = roundf(v * 100);
Ну или

C
1
c = v * 100 + 0.5f;
(только внимательно с отрицательными числами).
0
14.01.2017, 04:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2017, 04:56
Помогаю со студенческими работами здесь

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

Корректно ли приведенное преобразование типов
Здравствуйте! int p; float d = 2.54f; float rezult; rezult = p * d; Подскажите...

Нестандартное преобразование типов данных
Помогите пожалуйста Tесть код int a; int b double c; Как сделать

Преобразование типов, long и unsigned
1.Если какой-либо операнд имеет тип long, то другой операнд преобразуется к типу long, и это и...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru