почему не работает? Например вводишь 5.1234, а он выводит 0.000000???
#include<stdio.h>
void main()
{
double a;
scanf("%5.2lf",&a);
printf("a=%lf",a);
}
И ещё! А если написать без %5.2lf, а просто %lf. Я ввожу 1.01234, а он сохраняет в памяти 1.0123400000000000200000000000000. Откуда берётся эта 2? Как с этим бороться? Пишу программу умножения двух вещественных чисел столбиком.
8 декабря 2008 в 18:02
Народ, подскажите! Большая часть видео в контакте у меня не проигрывается! Просто темный экранчик, даже значка плэй нет. Почему??
7 декабря 2008 в 22:03
#4
google this:
cout.precision;
Пора переходить на С++, с С…
7 декабря 2008 в 21:02
не понятно что ты вообще делаешь
7 декабря 2008 в 21:02
Насчет "откуда берется эта 2":
Все числа, в т.ч. и вещественные, представляются в компьютере в двоичной системе исчисления.
При разборе десятичной строки функция scanf запихивает в переменную не точное (поскольку это не всегда возможно), а самое близкое к считываемому из представимых в двоичной системе чисел.
1.0123400000000000200000000000000 – это самое близкое к 1.01234 из чисел типа double (64 двоичных бита).
7 декабря 2008 в 21:02
Попробуй представить в двоичной системе 1.3. Сделай это, представив 13 и затем деля его на 10 так же, как в десятичной ты делил бы, например, 17 на 14 – получится периодическая дробь. То есть, число 1.3 можно точно представить в десятичной системе, но нельзя в двоичной.
7 декабря 2008 в 21:02
а
float a;
вместо double не пробовал?
7 декабря 2008 в 21:01
мне нужен ввод с опр. точностью
7 декабря 2008 в 21:00
а нах писать %5.2lf…если можно просто %f.И ваще нах тебе scanf, если можно использовать cout<<
7 декабря 2008 в 21:00
и cin>>