Win32 console application
Как сделать так,что бы программа,написанная на Visual Studio C вела вычисления с двумя знаками после запятой?
Вот сама программа, но она делает расчеты с 5ю знаками после запятой, а мне нужно, что бы именно с двумя! Заранее спасибо)
#include <stdio.h>
int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
float x,p,m,y;
scanf ("%f ",&x);
scanf ("%f ",&p);
scanf ("%f ",&m);
int i,k;
k=p/12;
y=x;
for (i=1;i<=m;i++)
{
y=y+(y*k/100);
}
printf("%.2f",y);
return 0;
}
int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
float x,p,m,y;
scanf ("%f ",&x);
scanf ("%f ",&p);
scanf ("%f ",&m);
int i,k;
k=p/12;
y=x;
for (i=1;i<=m;i++)
{
y=y+(y*k/100);
}
printf("%.2f",y);
return 0;
}
25 марта 2010 в 23:03
#include <stdio.h>
int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
float p,m;
int x, y;
scanf ("%d ",&x);
scanf ("%f ",&p);
scanf ("%f ",&m);
int i,k;
k=p/12;
y=x;
for (i=1;i<=m;i++)
{
y=y+(y*k);
}
float result;
result = result/100;
printf("%.2f",result);
return 0;
}
Если что, сори за оформление, ибо кодю на Java )
25 марта 2010 в 23:03
Вот)
Спасибо большое, помогло)
25 марта 2010 в 23:03
Непонятно зачем это нужно, но насколько я понял следует после каждого умножения/деления производить округления до 2-х знаков после запятой. Напиши свою функцию round( float x), для округления, вроде такой:
float round( float x) {
return ((int)(x * 100.0 + 0.5)) / 100.0;
}
В теле цикла пиши:
y = y + round( round( y * k) / 100);
Если бы писал на плюсах, мог бы сделать свой класс округленных целых чисел и перегрузить операции для него, это позволило бы записывать арифметические выражения как обычно.
25 марта 2010 в 23:03
Нет, округления не нужны были, смотрите мой код )) Оказалось я попал в точку
25 марта 2010 в 23:02
Вашу формулу умножьте на 100, результат умножение сделайте типом int. А перед тем как выводить результат посчитайте его поделив на 100, но уже как float тип)
25 марта 2010 в 23:01
Укажите строку, где именно округляется, возможно я не вижу
25 марта 2010 в 23:01
На выводе: printf("%.2f",y);
А нужно, что бы все вычисления проводились только с двумя знаками после запятой.
25 марта 2010 в 23:01
А еще выше на ссылке, которую я дал написано
"… Writes to the standard output (stdout) a sequence of data formatted as the format argument specifies. After the format parameter, the function expects at least as many additional arguments as specified in format."
"Запись в стандартный выходной поток последовательности форматированный данных…."
Где тут округление ?
25 марта 2010 в 23:01
Поясню поподробнее с момента, как мы попадаем в цикл:
1й шаг) y= 1000.0000
2) y= 1010.0000
3) y= 1020.1000
4) y = 1030.3010
стоп.
Мы рассматриваем 4 знака после запятой. И вот эти 10 десятитысячных в дальнейшем сделают вычисление неточным. Должно быть так
1) y = 1000.00
2) y= 1010.00
3) y= 1020.10
4) y = 1030.30
25 марта 2010 в 23:00
Откройте учебник .. и прочитайте… у вас какой тип ??? Float, изучите с какой точностью получается результат ?? А калькуляторс какой точностью считает ??
На сколько могу судить вам число округлили и вывели 2 знака после запятой,так же могли вывести и 10 знаков, тоже округленных. Прочитайте про типизацию языка C++.Такие вопросы и такая постановка задачи заставляет усомниться в вас, как в будущем программисте.
25 марта 2010 в 23:00
Кажется, вы меня не поняли.
В данной программе (выше расписано) сначала идут вычисления, а потом они округляются до двух знаков после запятой. А нужно, что бы числа сначала округлялись и только потом вычислялись!
25 марта 2010 в 22:05
Теперь он выводит с двумя знаками после запятой, но расчеты-то делает не с двумя! Результат получается не точный(
25 марта 2010 в 22:05
Млять, вы сами определись что вы хотите, особенно с количеством знаков после запятой и научитесь гуглом пользоваться………….
25 марта 2010 в 22:05
Я хочу ровно два знака. И при при выводе и на вводе. Помогите пожалуйста, не помог мне гугл, ламер я. Просто нужно программу доработать
25 марта 2010 в 22:04
на это же странице чуть выше
%[flags][width][.precision][length]specifier
25 марта 2010 в 22:03
Да, это тоже верно) Исправил на %f
Но мне нужно, что бы все расчеты велись с двумя знаками после запятой. А в данном случае их больше
25 марта 2010 в 22:03
Как написано в задаче:
Точность представления вещественных чисел – до второго знака после запятой.
У меня ответ:1126.825195
А должно быть:1126.84
25 марта 2010 в 22:00
У вас форматированный вывод
//www.cplusplus.com/reference/clibrary/cstdio/p...
вместоd or i Signed decimal integer
нужно f Decimal floating point
25 марта 2010 в 21:05
дыкПочему форматированный вывод с помощью %d
Читайте о типах и форматированном выводе
P.s. А к чему уточнение, какая у вас Ide ?
25 марта 2010 в 21:05
В данном примере я юзал float