C Programming - Floating Point Issues
Exercise "Nothing in life is to be feared, it is only to be understood."
- Marie Curie
6.
We want to round off x , a float , to an int value, The correct way to do is
A.
y = (int)(x + 0.5) B.
y = int(x + 0.5) C.
y = (int)x + 0.5 D.
y = (int)((int)x + 0.5)
Answer: Option E
Explanation:
Rounding off a value means replacing it by a nearest value that is approximately equal or smaller or greater to the given number.
y = (int)(x + 0.5); here x is any float value. To roundoff, we have to typecast the value of x by using (int)
Example :
#include <stdio.h>
int main ()
{
float x = 3.6;
int y = (int)(x + 0.5);
printf ("Result = %d\n", y );
return 0;
}
Output :
Result = 4.
7.
The binary equivalent of 5.375 is
A.
101.101110111 B.
101.011 C.
101011 D.
None of above
Answer: Option E
Explanation:
No answer description available for this question. Let us discuss .
8.
A float occupies 4 bytes. If the hexadecimal equivalent of these 4 bytes are A, B, C and D, then when this float is stored in memory in which of the following order do these bytes gets stored?
A.
ABCD B.
DCBA C.
0xABCD D.
Depends on big endian or little endian architecture
Answer: Option C
Explanation:
No answer description available for this question. Let us discuss .
9.
What will you do to treat the constant 3.14 as a float ?
A.
use float(3.14f) B.
use 3.14f C.
use f(3.14) D.
use (f)(3.14)
Answer: Option B
Explanation:
Given 3.14 is a double constant.
To specify 3.14 as float , we have to add f to the 3.14. (i.e 3.14f )
10.
Which of the following statement obtains the remainder on dividing 5.5 by 1.3 ?
A.
rem = (5.5 % 1.3) B.
rem = modf(5.5, 1.3) C.
rem = fmod(5.5, 1.3) D.
Error: we can't divide
Answer: Option D
Explanation:
fmod(x,y) - Calculates x modulo y, the remainder of x/y.
This function is the same as the modulus operator. But fmod() performs floating point divisions.
Example :
#include <stdio.h>
#include <math.h>
int main ()
{
printf ("fmod of 5.5 by 1.3 is %lf\n", fmod (5.5, 1.3) );
return 0;
}
Output :
fmod of 5.5 by 1.3 is 0.300000