Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2009, 22:13   #1
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию умножение int на float

добрый день, я вот тут решил банальную программу зделать... но что то не так у меня (
помогите разобраться
Код:
#include <stdio.h>
#include <conio.h>

void main (void)
{
	float s;
	int a = 1;
	while (a == 1)
	{
		printf ("Vvedite nuzniy shans: ");
		scanf ("%f", &s);
		s = 10000 * s;
		printf ("%f\n", s);
	}
}
я ввожу 0.019 и мне выводит:189.999994
заранее благодарен за помощь и подсказки
Olejik вне форума Ответить с цитированием
Старый 24.09.2009, 22:18   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

А какой компилятор? ) У меня выводит 190.000000 (VS2008)
netrino вне форума Ответить с цитированием
Старый 24.09.2009, 22:35   #3
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

у меня 6, надо проверить на 8...
и еще, если вот например: 190.000000, то как зделать так чтобы автоматически переводила в 190?
Olejik вне форума Ответить с цитированием
Старый 24.09.2009, 22:38   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Какая-то суровая погрешность float'a получилась. Может быть это из-за преобразования int->float.
10000 * s возвращает int, т.к. int * float = int
Попробуй заменить строку на:
s = 10000.0 * s;
ЗЫ. Зачем там бесконечный цикл?)
pu4koff вне форума Ответить с цитированием
Старый 24.09.2009, 22:46   #5
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Какая-то суровая погрешность float'a получилась. Может быть это из-за преобразования int->float.
10000 * s возвращает int, т.к. int * float = int
Попробуй заменить строку на:
s = 10000.0 * s;
ЗЫ. Зачем там бесконечный цикл?)
я сделал как Вы сказали, тот же ответ... а безконечный цикл у меня, т.к. я буду вводить мнооого параметров )
Olejik вне форума Ответить с цитированием
Старый 24.09.2009, 23:02   #6
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Olejik Посмотреть сообщение
у меня 6, надо проверить на 8...
и еще, если вот например: 190.000000, то как зделать так чтобы автоматически переводила в 190?
Код:
printf("%.0f", s);
netrino вне форума Ответить с цитированием
Старый 24.09.2009, 23:04   #7
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

Цитата:
Сообщение от netrino Посмотреть сообщение
А какой компилятор? ) У меня выводит 190.000000 (VS2008)
хм... на 2008 все правильно работает, кажется у меня что то с С++
я все сделал, огромное спасибо всем кто ответил, а чтобы выводило 190 вместо 190.0000 я воспользовался cout )
Olejik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
float to int span4 SQL, базы данных 7 01.06.2009 10:57
Точность типа float HunterMan Общие вопросы C/C++ 6 07.02.2009 23:05
конвертирование Hex -> Text и Float -> Int NikOnLine Общие вопросы Delphi 13 22.12.2007 23:11