Používání pevné řádové čárky je ve výpočetní technice jeden ze způsobů, jak reprezentovat a zpracovávat čísla, která nejsou celá; zatímco při práci s celými čísly se pracuje pouze s číslicemi vlevo od řádové čárky a při práci s čísly s pohyblivou řádovou čárkou se uchovává určitý počet nejvýznamnějších číslic a informace o řádu první číslice, u čísel s pevnou řádovou čárkou se pracuje s určitým pevným počtem číslic (obvykle desítkových nebo dvojkových) za řádovou čárkou.
Potřeba práce s čísly s pevnou řádovou čárkou často vychází z finančnictví, kde se pracuje s částkami zaokrouhlenými na určitý zlomek měnové jednotky (typicky 1/100 koruny, dolaru, apod.) podle přesně daných pravidel.
Další příčinou používání čísel s pevnou řádovou čárkou byla velká výpočetní nebo obvodová náročnost práce s čísly s pohyblivou řádovou čárkou. V případě 16bitových mikroprocesorů byla rychlost provádění operací s celými čísly o jeden a dva řády vyšší než s čísly s pohyblivou řádovou čárkou při hardwarové realizaci (FPU) a až o tři řády vyšší při softwarové realizaci (numerické knihovny).
Obecněji lze reprezentaci s pevnou řádovou čárkou popsat jako metodu práce s čísly, která jsou vyjádřena jako celočíselné množství určité pevné malé jednotky. Opačným způsobem se pevná řádová čárka používá ve finančních výkazech, kde se částky uvádějí v celočíselných počtech násobků základní jednotky (např. tisíců Kč).
Při reprezentaci s pevnou řádovou čárkou je zlomková část často vyjádřena ve stejné číselné soustavě jako celočíselná část, ale pomocí záporné mocniny o základu b. Nejčastěji se používá desítková soustava (základ 10) nebo dvojková soustava (základ 2). Druhý případ se obvykle nazývá binární škálování. Pokud se tedy ukládá n číslic za řádovou čárkou, hodnota bude vždy celočíselným násobkem nějaké záporné mocniny n základu b, tj. celočíselným násobkem hodnoty b−n. Reprezentace s pevnou řádovou čárkou může také být použita pro zanedbání nejméně významných číslic celočíselné hodnoty, například při reprezentaci velkých částek v určité měně jako násobků 1000.
Při používání čísel s pevnou řádovou čárkou je časté používání desítkové soustavy a kódování BCD.
V češtině a dalších středoevropských jazycích se při zobrazování čísel s pevnou řádovou čárkou používá jako oddělovač celé a zlomkové části znak čárka, v anglosaské oblasti je obvyklejší tečka. Ve vnitřní reprezentaci však žádný oddělovač není.
Reprezentace s pevnou řádovou čárkou byla standardem v dobách používání mechanických kalkulátorů, na které navázaly děrnoštítkové stroje. Ještě mnohé sálové počítače měly strojové instrukce pro práci s čísly v pevné řádové čárce, u mikroprocesorů je podpora omezena na instrukce provádějící BCD korekce. Většina moderních procesorů má rychlou jednotku pro výpočty v pohyblivé řádové čárce (FPU), a reprezentaci s pevnou řádovou čárkou používají pouze ve speciálních situacích, např. v laciných vestavěných mikroprocesorech a mikrořadičích; v aplikacích, které vyžadují vysokou rychlost a/nebo nízkou výkonovou spotřebu nebo malou plochu čipu, jako při digitálním zpracování signálu, digitálním zpracování obrazu a digitálním zpracování videa, nebo když je použití čísel s pevnou řádovou čárkou přirozenější pro daný problém, např. v účetnictví, kdy se zlomky centů musí zaokrouhlovat na celé centy striktně předepsaným způsobem a funkce se vyhodnocují pomocí vyhledávacích tabulek.
Reprezentace + Reprezentace s pevnou řádovou čárkou+ s měřítkem 1/100 Reprezentovanáhodnota Interníreprezentace 0,00 0 0,5 50 0,99 99 2 200 −14,1 −1410 314,160 31416 Pro reprezentaci racionálního čísla s pevnou řádovou čárkou je v zásadě celé číslo, které je implicitně znásobené pevným měřítkem. Například hodnotu 1,23 lze reprezentovat jako celé číslo 1230 s implicitním měřítkem 1/1000 (s tím, že o posledních třech desítkových číslicích se implicitně předpokládá, že jde o desetinná místa); naopak hodnotu 1 230 000 lze reprezentovat jako 1230 s implicitním měřítkem 1000 (s minus třemi implicitními desítkovými číslicemi, což znamená, že desetinná čárka je o 3 řády vpravo). Tato reprezentace umožňuje, aby standardní celočíselná aritmeticko-logická jednotka prováděla výpočty s racionálními čísly.
Záporná čísla se v binárním formátu s pevnou řádovou čárkou obvykle reprezentují jako celé číslo se znaménkem ve formě dvojkového doplňku s implicitním měřítkem jak je popsáno výše. Znaménko hodnoty bude vždy indikováno prvním uloženým bitem (1 = záporné číslo, 0 = nezáporné číslo) i když počet zlomkových bitů je větší nebo roven celkovému počtu bitů. Například osmibitové dvojkové celé číslo se znaménkem (11110101)2 = −11, reprezentované s -3, +5 resp. +12 implicitními zlomkovými bity reprezentuje postupně hodnoty −11/2−3 = −88, −11/25 = −0,343 75, a −11/212 = −0,002 685 546 875.
Alternativně lze záporné hodnoty reprezentovat celým číslem s použitím dvojkového doplňku; v tomto případě znaménko nikdy není obsaženo v implicitních zlomkových bitech. Tato varianta se častěji používá v desítkové aritmetice s pevnou řádovou čárkou. Tedy pětimístné desítkové celé číslo se znaménkem (−00025)10 postupně s -3, +5, a +12 implicitními desetinnými číslicemi, reprezentuje hodnoty −25/10−3 = −25000, −25/105 = −0,00025 a −25/1012 = −0,000 000 000 025.
Programy obvykle předpokládají, že všechny hodnoty s pevnou řádovou čárkou, které se budou ukládat do dané proměnné, nebo které budou vytvořeny danou instrukcí, budou mít stejné měřítko. Měřítko obvykle může být zvoleno programátorem podle požadované přesnosti a rozsahu hodnot, které mají být uchovávány.
Měřítko proměnné nebo (mezi)výpočtu se v programu nemusí explicitně objevit. Je však dobrou programátorskou praxí je uvést v dokumentaci, alespoň ve formě komentáře ve zdrojovém kódu.
Volba měřítka Pro větší efektivitu se za měřítka často volí (kladné nebo záporné) mocniny základu b použitého v interní reprezentaci celých čísel. Často však je měřítko vynucené aplikací; Často se tedy používají měřítka, která jsou mocninou 10 (například 1/100 pro peněžní částky), dokonce i tehdy, když jsou celá čísla reprezentována interně ve dvojkové soustavě. Desítkové měřítko také vychází z použití Mezinárodní soustavy jednotek SI, protože volba měřítka při použití pevné řádové čárky je často ekvivalentní s volbou jednotky míry (např. centimetrů nebo mikrometrů místo metrů).
Příležitostně se však mohou používat jiná měřítka; například zlomky hodin mohou být reprezentovány celočíselným počtem sekund, tj. číslem s pevnou řádovou čárkou s měřítkem 1/3600.
I při sebepečlivějším zaokrouhlování může mít hodnota uloženého celého číslo s pevnou řádovou čárkou v reprezentaci s měřítkem S chybu až ±0,5, což odpovídá chybě hodnoty ±0,5.S. Proto použití menšího měřítka obecně dává přesnější výsledky.
Menší měřítko však znamená menší rozsah hodnot, které lze do dané proměnné uložit. Maximální hodnota reprezentovatelná určitou proměnnou s pevnou řádovou čárkou je rovna největší celočíselné hodnotě, kterou lze do proměnné uložit, znásobená měřítkem; stejně je tomu s minimální hodnotou. Následující tabulka ukazuje, jak závisí minimální a maximální reprezentovatelná hodnota Vmin a Vmax a přesnost δ = S/2 na počtu f implicitních zlomkových bitů, který udává implicitní měřítko S, při použití 16bitového dvojkového čísla se znaménkem pro reprezentaci s pevnou řádovou čárkou. + Parametry některých formátů 16bitových dvojkových čísel s pevnou řádovou čárkou a znaménkem f S δ Vmin Vmax −3 1/2−3 = 8 4 −262 144 +262 143 0 1/20 = 1 0,5 −32 768 +32 767 5 1/25 = 1/32 < 0,016 −1024,000 00 +1023,968 75 14 1/214 = 1/16 384 < 0,000 031 −2,000 000 000 000 00 +1,999 938 964 843 75 15 1/215 = 1/32 768 < 0,000 016 −1,000 000 000 000 000 +0,999 969 482 421 875 16 1/216 = 1/65 536 < 0,000 008 000 000 000 000 0 +0,499 984 741 210 937 5 20 1/220 = 1/1 048 576 < 0,000 000 5 −0,031 250 000 000 000 000 00 +0,031 249 046 325 683 593 75
Formáty s pevnou řádovou čárkou s měřítkem tvaru 2n-1 (pro n = 1, 3, 7, 15, 31, atd.) jsou vhodné pro zpracování obrazu a jiné úlohy při digitálním zpracování signálu. Předpokládá se, že poskytují konzistentnější konverze mezi hodnotami s pevnou a pohyblivou řádovou čárkou než použití obvyklého měřítka 2n. Programovací jazyk Julia implementuje obě verze.
Přesné hodnoty Jakýkoli binární zlomek a/2m, např. 1/16 nebo 17/32, lze číslem s pevnou řádovou čárkou s mocninou měřítka 1/2n s jakýkoli n ≥ m reprezentovat přesně. V soustavě o základu 2 má však většina desítkových zlomků, jako 0,1 nebo 0,123, vyjádření s nekonečným periodickým rozvojem, a tímto způsobem tedy být přesně reprezentovány nemohou.
Obdobně jakýkoli desítkový zlomek a/10m, např. 1/100 nebo 37/1000, lze přesně reprezentovat číslem s pevnou řádovou čárkou s mocninou měřítka 1/10n s jakýkoli n ≥ m. Tímto desítkovým formátem lze reprezentovat jakýkoli dvojkový zlomek a/2m, např. 1/8 (0,125) nebo 17/32 (0,53125).
Obecněji, Racionální číslo a/b, s a a b nesoudělnými a b kladným, lze přesně reprezentovat dvojkovým číslem s pevnou řádovou čárkou pouze tehdy, pokud b je mocninou čísla 2; desítkovým číslem s pevnou řádovou čárkou pak pouze tehdy, pokud b nemá žádné prvočíselné dělitele kromě 2 a 5.
Porovnání zpracování s pohyblivou řádovou čárkou Výpočty s pevnou řádovou čárkou mohou být rychlejší a mohou vyžadovat jednodušší hardware než výpočty s pohyblivou řádovou čárkou. Pokud je rozsah hodnot, které mají být reprezentovány, znám předem a je dostatečně omezený, může použití čísel s pevnou řádovou čárkou zlepšit využití dostupných bitů. Pokud je například pro reprezentaci čísel mezi 0 a 1 dostupných 32 bitů, může mít reprezentace s pevnou řádovou čárkou chybu menší než 1,2 × 10−10, zatímco standardní reprezentace s pohyblivou řádovou čárkou může mít chybu až 596 × 10−10 – protože 9 bitů je zbytečně použito pro znaménko čísla a exponent. Pokud konkrétně, porovnáme použití 32bitových hodnot s pevnou řádovou čárkou s použitím pohyblivé řádové čárky pro audio data, bude mít záznam vyžadující rezervu dynamického rozsahu () menší než 40 dB bude mít při použití 32bitových čísel s pevnou řádovou čárkou větší odstup signálu od šumu.
Programy provádějící výpočty s pevnou řádovou čárkou jsou obvykle lépe přenositelné než programy, které používají pohyblivou řádovou čárku, protože nevyžadují přítomnost FPU. Tato výhoda byl obzvláště významná před rozšířením standardu IEEE 754, kdy výpočty v pohyblivé řádové čárce se stejnými daty dávaly na počítačích různých výrobců (nebo i různých modelech počítačů téhož výrobce) různé výsledky.
Mnoho vestavěných procesorů nemá FPU, protože celočíselná aritmetická jednotka vyžaduje podstatně méně logických členů a zabírá mnohem menší plochu čipu než FPU; softwarová emulace aritmetiky s pohyblivou řádovou čárkou na pomalém zařízení by pro většinu aplikací byla příliš pomalá. Starší mikroprocesory, jako Intel 80386 a 486SX, používané v osobních počítačích a herních konzolách také neobsahovaly FPU.
Absolutní rozlišení (rozdíl mezi následujícími hodnotami) jakéhokoli formátu s pevnou řádovou čárkou je v celém rozsahu konstantní, a je rovno hodnotě měřítka S. Naproti u formátu s pohyblivou řádovou čárkou je relativní rozlišení přibližně konstantní v celém rozsahu, proměnné podle faktoru o základu b; naproti tomu absolutní rozlišení se mění o mnoho řádů, jako hodnoty samy.
V mnoha případech lze chyby výpočtů s pevnou řádovou čárkou způsobené zaokrouhlováním a zkracováním analyzovat snáze než ekvivalentní výpočty s pohyblivou řádovou čárkou. Použití linearizačních technik na zkracování, např. ditheringu nebo tvarování šumu je v aritmetice s pevnou řádovou čárkou jednodušší. Použití pevné řádové čárky však vyžaduje od programátora větší péči: Aby nedocházelo k přetečení, musejí být odhady rozsahů proměnných a všech mezihodnot při výpočtu mnohem přesnější, a často je také potřeba zvláštní kód pro určení jejich měřítka. Programování s pevnou řádovou čárkou obvykle vyžaduje použití celočíselných typů různých velikostí.