Функция setprecision - точност при извеждане на стойност

Описанието на функция setprecision и функция setw се намира в библиотечния файл iomanip. Съхраняваната в оперативната памет точност на дадена променлива (това важи с особена сила за числа с плаваща запетая) не е равна на точността на извеждане на същата тази стойност. Под точността на извеждане разбираме с какъв брой разряди, с колко цифри се извежда изчислена или въведена стойност.

   Представете си следната ситуация при счетоводна операция в банка за олихвяване влогове/кредити на клиенти. Формираната крайна стойност за сумата на влога/заема е в пряка зависимост от стойността на лихвения процент. Това би довело до извеждане на стойност с 3-5 знака след десетичната запетая, но в страната най-малката парична единица е стотинката със стойност 0.01 от лева със 2 знака след десетичната запетая.
   Този факт би породил смесени чувства, ако се осъществи поотделно извеждане сумата за всеки клиент и общата сума, но формирана като сбор от реално изчислените стойности общо за всички влогове.
   С каква точност на извеждане, с с какъв брой разряди след десетичната запетая ще бъдат изведени отделните стойности може да се управлява чрез библиотечната функция setprecision. При извеждане на стойности обикновено не се интересуваме от броя нули като най-десни знаци в едно число. Когато се извършва извеждане на таблица от стойности е по-прегледно числата да бъдат изведени по колони - като се използва библиотечната функция setw ( брой колони ).
   Обърнете внимание, че точност при извеждане, желан брой разряди със setprecision се обявява еднократно, но при табулиране със setw е необходимо изриично указване за всяко извеждане на дадена стойност.  
   Следващата програма дава примерно решение на задачата с двете библиотечни функции setprecision и setw:
#include <iomanip> //bibliotekata sydyrva opisanie za setw
#include <iostream>
using namespace std;

void tochnost  (double b1, double b2)
{  int i;
   for (i=7;i>=2;i--)
   {cout<<"Broj znaci sled desetichnata tochka: "<<i<<endl;
   cout<<setprecision (i)<<b1/b2<<endl;// tochnost broj znaci sled desetichnata tochka
    cout<<"Razstoqnie mevdu stojnostite: "<<i+5<<endl;
    cout<< setw (i+5)<<b1<< setw (i+5)<<b2<<endl;//broj pozicii za tabulirane
  }//for
}//tochnost - setprecision setw

int main()
{double b1,b2;
   char ose;
 cout<<"Programata ilustrira osobenosti pri izwevdane na chisla.\n";
 cout<<" setw se izpolzwa pri tabulirane - oformqne na koloni.\n";
 cout<<" setw okazwa efekt samo pri pechat na promenliwata sled nego.\n";
 cout<<"setprecision se izpolzwa za opredelqne broj znaci sled 10-ichna tochka\n";
 cout<<"setprecision okazwa efekt pri pechat na wsichki promenliwi sled nego\n";
 cout<<"Dwete sluvebni dumi imat efekt samo pri izwevdane na danni.\n";
 cout<<"Primer: 65,75  Izhod: 7 - 0.8666667; 6 - 0.866667; 5 - 0.86667; 4 - 0.8667\n";
  do {
   cout<<"Wywedete realno chislo ot interwala [11.01..99.99]: ";cin>>b1;
   cout<<"Wywedete realno chislo ot interwala [11.01..99.99]: ";cin>>b2;
   tochnost  (b1,b2);
   cout<<"She wywevdate li drugi danni <y/n>: ";cin>>ose;
  } while (ose=='y');
system("pause");
return 0;
}//kraj na programa tochnost setprecision setw 

Можете да намерите допълнителен материал за точност при извеждане на стойност.
Обяснени и решени задачи с подобни алгоритми, функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени задачи, примери.

Начало на страницата

 
Размер на шрифта
Increase Font Size Option 3 Reset Font Size Option 3 Decrease Font Size Option 3
Bulgarian Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish
Търсене в сайта: