PDA

View Full Version : Doubt in C


abhi_10_20
16-03-2007, 07:48 PM
Dunno whether its right to post it here....

Anyway, this is my doubt:

i couldn't find this in Google.......

---> if we declare a float, like:

float a=2.7;

it gets stored in the memory as 2.700000 with specifically 6 digits only, after the decimal point. Why? (may be related to its format)

The Unknown
16-03-2007, 08:02 PM
Dunno whether its right to post it here....

Anyway, this is my doubt:

i couldn't find this in Google.......

---> if we declare a float, like:

float a=2.7;

it gets stored in the memory as 2.700000 with specifically 6 digits only, after the decimal point. Why? (may be related to its format)
It's predefined in the compiler. This is probably the wrong sect. it shud go in s/w troubleshooting. :)

47shailesh
16-03-2007, 08:13 PM
Yes by default it is upto 6 point decimal...

But if you want it to 3 point decimal than use %.3f in the print statement to get result in upto 3 place of decimal

e.g.

printf("salary is %.3f\n", salary );

For in depth Knowledge read Dennis Ritche

mediator
16-03-2007, 08:50 PM
U can set any precision u want! Check my code

#include <iomanip.h>
#include <iostream.h>
int main()
{
int p;
cout<<"Mediator asked to enter precision u wanna set : "; cin>>p;
double x(3.14);
cout <<"x = "<<fixed <<setprecision(p)<<x<<'\n';
cout <<"x/3 = "<<fixed <<setprecision(p)<<(x/3)<<'\n';
return 0;
}

U can set any precision using setprecision! Don't try large numbers or ur terminal might hang! I tried "100000000000" as precision and had to kill the program then!! ;)

abhi_10_20
16-03-2007, 09:15 PM
thanks for your replies......

but still not satisfied somewhat...
i think it goes with the storage space reserved........like float requires 4 bytes
in a standard turbo c compiler.....and we need to do some 'masala munch' with these 4 bytes.....

The Unknown
17-03-2007, 11:58 AM
U can set any precision u want! Check my code

U can set any precision using setprecision! Don't try large numbers or ur terminal might hang! I tried "100000000000" as precision and had to kill the program then!! ;)
Buddy, abhi_10_20 is talking about C. Your code is C++! :)

mediator
17-03-2007, 02:14 PM
^^But his precise problem is about float!

The Unknown
17-03-2007, 02:16 PM
^^But his precise problem is about float!
ok. :)

abhi_10_20
17-03-2007, 03:46 PM
isn't setprecision() found in C ?

mediator
17-03-2007, 04:50 PM
setprecision is found from library "iomanip.h" and it doesn't matter if its c or c++ afaik!

The Unknown
17-03-2007, 06:38 PM
If you want a detailed manual on programming in C, see snip

i have uploaded it. :)
__________
After giving the captcha code, wait 30 secs. goto the bottom. when the downlaod now button gets activated, click it to download. Don't use any d/w manager. :)
__________
Was it useful? :)

abhi_10_20
17-03-2007, 09:19 PM
another c book into my kitty........
man...i can start a big library with my pdf's....

The Unknown
17-03-2007, 09:33 PM
another c book into my kitty........
man...i can start a big library with my pdf's....
Ha hA ha ha. :lol:

47shailesh
20-03-2007, 03:55 PM
If you want a detailed manual on programming in C, see snip


Same book i was talkin about..

in the pdf mentiontioned page number 22 gives the idea about your problem

abhi1301
20-03-2007, 04:11 PM
Ha hA ha ha. :lol:

Or u better start trusting the replies in here .. Shilesh is perfectly correct .. it's 6 point precision by default and u cannot do anything about it if u want the value just 1 or 2 places do it just like it's written .. change the precision of output wid
printf("salary is %.3f\n", salary );

being more clear this will print upto 3 places after decimal if u write
printf("salary is %.2f\n", salary );

this prints 2 values and so on ..

47shailesh
20-03-2007, 10:03 PM
snip


:shock: this book is "W. Kernighan and Dennis M. Ritchie" is it not a copyright voilation.. if so then remove the link please..

The Unknown
21-03-2007, 02:01 PM
:shock: this book is "W. Kernighan and Dennis M. Ritchie" is it not a copyright voilation.. if so then remove the link please..
I don't know. It was given to me by a frnd. :?: