Дополнен 17 лет назад
Вот программка:
#include<iostream.h>
#include<conio.h>
main()
{
clrscr();
double b=0.0001;
cout << b;
cout << "\n";
cout << b*b;
}
А вот, что она выдает:
1e-04
9.999999e-09
Так вот почему первое в квадрате выдает второе, я никак не пойму. Кто-нибудь объяснить может?
(pow((a-b),2)-(a*a-2*a*b))/(b*b);
Нужно объяснить, почему результаты отличаются при различных типах исходных данных (float и double). В обоих случаях a=1000, b=0.0001.
Вроде float и double - вещественные типы, различаются только точностью и максимальным количеством разрядов числа; но ведь исходные данные одинаковы при любом типе, почему результат-то разный?
И вообще, если раскрыть скобки в числителе, получается (b*b)/(b*b). По идее, всегда 1 должна быть в ответе, независимо от операндов. С целыми так и есть, а вот с дробными...
Короче, объясните, пожалуйста, кто особо добрый.