/*
 Laboratorium Praktyki Programowania  
 Wczytywanie i wypisywanie liczb zmiennoprzecinkowych 
 przy pomocy strumieni.
*/


#include <iostream.h>
#include <iomanip.h>
/* Nagłówek math.h jest konieczny do operowania na funkcjach i 
   stałych matematycznych */
#include <math.h>


int main(){
  
  float a,b;
  
  a=M_PI;
  b=tan(a);
  
  cout << "PI = " << a << endl;
  cout << "tg(PI) = " << b << endl;
  /* tg(PI)=0 prawda, czy to jakiś błąd? */ 

  a=1;
  b=1/3.0;
  /*Proszę zuważyć, że napisanie w poniższej linii : b=1/3
    Spowoduje przypisanie b=0, 
    gdyż działanie 1/3 wykona się dla liczb całkowitych */
  a-=b;
  a-=b;
  a-=b;
  cout << "0 = " << a << endl;
  /* aha, to pewnie dlatego, że 1/3 nie ma skończonego rozwinięcia,
     więc komputer zapewne przechowuje tę wartość z pewnym przybliżeniem.
     Zobaczmy więc coś takiego:
  */ 
  
  a=0.3;
  a-=0.1;
  a-=0.1;
  a-=0.1;
  cout << "0 = " << a << endl;
  
  /* No cóż, poprzednia sugestia była słuszna, 
     nalezy jednak pamiętać, 
     że chodzi o rozwinięcia dwójkowe */
  
  return 0;
}

