Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > C++ Moderated > Re: C++ Exercis...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 4 of 4 Topic 9526 of 9831
Post > Topic >>

Re: C++ Exercise: Find precision of variable types

by "Jeff Baker" <algorthjb@[EMAIL PROTECTED] > Apr 22, 2008 at 10:53 AM

"C++ Newbie" <newbie.cpp@[EMAIL PROTECTED]
> wrote in message
news:b6b912f8-2a76-4eed-b9dc-8ab1901637a8@[EMAIL PROTECTED]
> In a C++ exercise, I was asked to find the precision of the variable
> types float, double and long double.
>
> I did it by dividing a starting number by 2 continuously until a
> logical test detected if there was no discernible difference between
> successive numbers. Is there a better way to do this?
>
> #include <iostream>
> #include <fstream>
>
> using std::cout;
> using std::cin;
> using std::fstream;
> using namespace std;
don't need namespace std; if you are using
using std::/..../;
>
>
> int main()
> {
> fstream myfile;
need ofstream myfile:
> myfile.open ("float_test.txt", ios::out);

Just need "float_test.txt");

> myfile << "floating point number precision test.\n";
> int active = 0;
> float buffer = 1000, float_test = 100, buffer1 = -1;
> while (active == 0)
> {float_test = float_test/2.;
> if (buffer == float_test)
> {
> cout << "Lowest float precision is: " << buffer1 << "\n";
> system ("tail -2 float_test.txt | head -1 > temp.txt");
> myfile.close();
> break;
> }
> if (buffer > float_test)
> {//cout << float_test << "\n";
> myfile << float_test << "\n";
> buffer1 = buffer;
> buffer = float_test;}
> }
>
> fstream myfile_d;
> myfile_d.open ("double_test.txt");
> myfile_d << "double precision test.\n";
> active = 0;
> double dbuffer = 1000, double_test = 100, dbuffer1 = -1;
> while (active == 0)
>         {double_test = double_test/2.;
>         if (dbuffer == double_test)
>                 {
>                 cout << "Lowest double precision is: " << dbuffer1 <<
> "\n";
>                 system ("tail -2 float_test.txt | head -1 >
> temp.txt");
>                 myfile_d.close();
>                 break;
>                 }
>         if (dbuffer > double_test)
>                 {//cout << double_test << "\n";
>                 myfile_d << double_test << "\n";
>                 dbuffer1 = dbuffer;
>                 dbuffer = double_test;}
>         }
>
> fstream myfile_ld;
> myfile_ld.open ("ldouble_test.txt");
> myfile_ld << "long double number precision test.\n";
> active = 0;
> long double ldbuffer = 1000, ldouble_test = 100, ldbuffer1 = -1;
> while (active == 0)
>         {ldouble_test = ldouble_test/2.;
>         if (ldbuffer == ldouble_test)
>                 {
>                 cout << "Lowest long double precision is: " <<
> ldbuffer1 << "\n";
>                 system ("tail -2 float_test.txt | head -1 >
> temp.txt");
>                 myfile_ld.close();
>                 break;
>                 }
>         if (ldbuffer > ldouble_test)
>                 {//cout << ldouble_test << "\n";
>                 myfile_ld << ldouble_test << "\n";
>                 ldbuffer1 = ldbuffer;
>                 ldbuffer = ldouble_test;}
>         }
>
> }
I don't know the problem you are working on, but I can give it better form
from what you have. I derive the same result for float.
#include <iostream>
#include <fstream>
using std::cout;
using std::cin;
using std::ios;
using std::ofstream;

int main()
{
  ofstream myfile;
  myfile.open ("precision_test.txt" );
  myfile << "floating point number precision test."<< std::endl;
float ff = 1000, buffer = 0;
while(ff > 0)
{
  buffer = ff;
  ff = ff/2; // 2 or 99
  if(ff == 0)
  {
   std::cout << "Lowest is " << buffer << std::endl;
   myfile << buffer << std::endl;
  }
}
myfile<< "double number precision test."<< std::endl;
double fd = 1000,buffer1 = 0;
while(fd > 0)
{
  buffer1 = fd;
  fd = fd/2;
  if(fd == 0)
  {
   std::cout << "Lowest is " << buffer1 << std::endl;
   myfile << buffer1 << std::endl;
  }
}
myfile.close();
}

Jeff


-- 
      [ See http://www.gotw.ca/resources/clcm.htm
for info about ]
      [ comp.lang.c++.moderated.    First time posters: Do this! ]
 




 4 Posts in Topic:
C++ Exercise: Find precision of variable types
"C++ Newbie" &l  2008-04-21 12:11:24 
Re: C++ Exercise: Find precision of variable types
Thomas Richter <thor@[  2008-04-21 15:39:14 
Re: C++ Exercise: Find precision of variable types
ram@[EMAIL PROTECTED] (S  2008-04-21 20:43:17 
Re: C++ Exercise: Find precision of variable types
"Jeff Baker" &l  2008-04-22 10:53:56 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Fri Jul 25 22:01:18 CDT 2008.