Två vanliga misstag i flytande punkträkning i C

Denna handledning kommer att visa två regler som måste respekteras vid utförande av flytande aritmetik i C. Följande regler kommer att förhindra förlust av information. Exempel med gå igenom förklaring som tillhandahålls.

1: a regel: Om en aritmetisk operatör har heltal operander utförs heltalsoperation.

Låt oss se ett exempel.

#include "stdio.h"
main ()
{
float c;
c = 5/9;
printf ("c =% f", c);
getch ();
}

I ovanstående program, även om variabel c verkar ha floatdatatyp, skrivs programmet c = 0.000000. Programmeraren trodde troligen att c = 0.555556.

Anledning: i detta uttryck c = 5/9, den / är den aritmetiska operatören. 5 och 9 är heltaloperandema. Enligt den första regeln utförs heltalsoperation. Därför avkortas heltalets delning och eventuell fraktionsdel kasseras. Således trunker uttrycket till 0.

2: a regel: Om en aritmetisk operatör har en flytande operand och ett heltal operand omvandlas heltalet till flytpunkten innan operationen är klar.

#include "stdio.h"
main ()
{
float c;
c = 5,0 / 9;
printf ("c =% f", c);
getch ();
}

I ovanstående program har variabel c flottat datatyp och programutskrifter c = 0,555556, undantagen utdata.

Anledning: i detta uttryck c = 5,0 / 9, den / är den aritmetiska operatören, 5,0 är flytande punktoperand och 9 är heltal operand. Enligt den andra regeln innan operationen är klar omvandlas heltaloperand till flytande punktoperand. Uttrycket kommer att vara c = 5,0 / 9,0. Uttrycket är inte avkortat eftersom det är förhållandet mellan två flytpunktvärden och således skrivs programmet c = 0.555556.