Jakiś czas temu rozwiązałem proste zadanie (1 linijka obliczeń) na spoju w Pascalu, dostałem za nie 4/4 punkty. Dzisiaj postanowiłem sobie niektóre programy przepisać na C++. Żeby nie pokazywać rozwiązania ani treści zadania to pokażę trochę zmienione obliczenia:
kod w Pascalu:
program xxx;
const
cSTALA = 1.123456789;
var
r,d,c: Real;
begin
ReadLn(r,d);
c:=0.3*r*r+d*d;
WriteLn(cSTALA*c);
end.
wynik: 4/4
i ten sam kod przepisany na C++:
#include <stdio.h>
int main()
{
const float cSTALA = 1.123456789;
float r,d,c;
scanf("%f%f",&r,&d);
c=0.3*r*r+d*d;
printf("%f",cSTALA*c);
return 0;
}
wynik: 1.6/4
po zmienieniu float na double wynik: 0.4/4,
po użyciu long double i cin/cout, wynik: 2.2/4
czy mógłbym prosić o wyjaśnienie mi tych anomalii?
jaki jest zatem odpowiednik real w C++?