Двострука тачност

Двострука тачност (енгл. double precision, double) је у рачунарству формат броја који за бележење бројевне вредности рационалног броја у покретном (пливајућем) зарезу. Користи се осам бајтова (64 бита) за запис броја. Притом интерпретација овог сегмента меморије зависи од оперативног система или саме структурираности група битова у запису.

Веома често се говори колоквијално о реалним бројевима у двострукој тачности, то су ипак рационални бројеви. Израз двострука тачност не значи да се тако може приказати број са двоструко више тачних децимала у односу на једноструку тачност. Целокупан запис броја је двоструко дужи, а тачност броја (која зависи од дужине мантисе) је уместо 23 повећана на 52 (или 55) бита, што је нешто више него двоструко више децимала. Поред овога, у двострукој тачности се може представити значајно шири опсег бројева.

Према стандарду IEEE 754, реални бројеви са двоструком тачношћу се деле на три дела: знак, експонент и фракцију (мантису). Тачнија подела битова по овим елементима је:

 
  • Знак броја одређује бит са највећом вредношћу индекса − 63 (највећом тежином), при чему вредност 1 означава негативан а 0 позитиван број.
  • Експонент је одређен са следећих 11 битова на местима 62 - 52. Овај број нема знака, а помоћу њега се одређује тзв. карактеристика која учествује у рачунању крајње вредности броја. Она се добија следећом формулом: карактеристика = експонент - 1023.
  • Фракција (мантиса) је вредност броја нормализована тако да се налази у опсегу веће или једнако 0,5 и мање од 1. Формирају је битови на позицијама 51 - 0. Овај број се у бинарној репрезентацији може представити као 0,1ббббббббббббб..... где су б битови који могу бити 0 или 1. Обзиром да увек на почетку стоји 0,1 ови битови се не морају физички појавити у запису, то јест може се имплицитно претпоставити да увек стоје ту. Зато се каже да мантиса представља 53 бита тачности иако су записана само 52 бита.

Двострука тачност има могућност представљања   тачних цифара. Ако се каже да двоструком тачношћу може приказати број у „тачности од 16 децимала“ то је погрешно јер се може приказати првих 16 значајних цифара, без обзира где је децимална запета.

Тачна интерпретација оваквог броја гласи:

(-1)знак · 2карактеристика · (1, фракција )

односно математички

 

Пример

уреди

Рецимо да је у сагласности са овим стандардом задат бинарни број двоструке тачности, чију децималну репрезентацију треба наћи:

0011111010000100000000000000000000000000000000000000000000000000

Број ће прво бити подељен на знак, експонент и фракцију:

0 01111101000 010000...

А потом ће вредности параметара бити одређене:

S = 0
E = (01111101000)2 = (1000)10
M = (010000...)2
C = E - 1023 = -23

Вредност = (-1)S · (1.M)2 · 2C
= (-1)0 · (1.010000...)2 · 2-23
= 1 · (1 + 2-2)10 · 2-23
= 1.25 · 2-23

Види још

уреди

Литература

уреди
  • Јозо Дујмовић, Програмски језици и методе програмирања, 1990, Научна књига, Београд