tanszek:oktatas:szamitastechnika:szamabrazolas
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| tanszek:oktatas:szamitastechnika:szamabrazolas [2026/10/01 20:16] – [5. Mekkora számok férnek el?] knehez | tanszek:oktatas:szamitastechnika:szamabrazolas [2026/10/01 20:34] (current) – knehez | ||
|---|---|---|---|
| Line 229: | Line 229: | ||
| A nem nulla szám abszolút értékét úgy rendezzük át, hogy a vessző előtt pontosan egy 1-es maradjon. Ezt az alakot **normalizált alaknak**, az átrendezést **normalizálásnak** nevezzük. | A nem nulla szám abszolút értékét úgy rendezzük át, hogy a vessző előtt pontosan egy 1-es maradjon. Ezt az alakot **normalizált alaknak**, az átrendezést **normalizálásnak** nevezzük. | ||
| - | Az '' | + | Az '' |
| Egy egynél kisebb számnál negatív kitevőt kapunk: | Egy egynél kisebb számnál negatív kitevőt kapunk: | ||
| Line 239: | Line 239: | ||
| ==== 9. IEEE 754: pontosan melyik bit mit tároljon? ==== | ==== 9. IEEE 754: pontosan melyik bit mit tároljon? ==== | ||
| - | Az alapötlet még nem határozza meg, hány bitet kapjon az előjel, a kitevő és a szignifikand. Ha különböző számítógépek ugyanúgy szeretnék értelmezni az adatot, közös szabályokra van szükségük. | + | Az alapötlet még nem határozza meg, hány bitet kapjon az előjel, a kitevő és a szignifikáns. Ha különböző számítógépek ugyanúgy szeretnék értelmezni az adatot, közös szabályokra van szükségük. |
| Az **IEEE 754** a lebegőpontos számábrázolás és aritmetika szabványa. Többek között tárolási formátumokat, | Az **IEEE 754** a lebegőpontos számábrázolás és aritmetika szabványa. Többek között tárolási formátumokat, | ||
| Line 248: | Line 248: | ||
| | Előjel | 1 bit | 0: pozitív, 1: negatív előjel | | | Előjel | 1 bit | 0: pozitív, 1: negatív előjel | | ||
| | Eltolt kitevő | 8 bit | A kettes hatvány kitevőjének tárolása, az alább megadott eltolással | | | Eltolt kitevő | 8 bit | A kettes hatvány kitevőjének tárolása, az alább megadott eltolással | | ||
| - | | Törtrész | 23 bit | A normalizált | + | | Törtrész | 23 bit | A normalizált |
| Ez összesen **1 + 8 + 23 = 32 bit**, vagyis négy bájt. A következő levezetések a normál, véges, nem nulla számokra vonatkoznak. A nulla és más különleges esetek szabályait később külön tárgyaljuk. | Ez összesen **1 + 8 + 23 = 32 bit**, vagyis négy bájt. A következő levezetések a normál, véges, nem nulla számokra vonatkoznak. A nulla és más különleges esetek szabályait később külön tárgyaljuk. | ||
| Line 256: | Line 256: | ||
| A normalizált bináris alak mindig '' | A normalizált bináris alak mindig '' | ||
| - | Például az '' | + | Például az '' |
| - | Az elhagyott első 1-est **rejtett vezető bitnek** nevezik. Emiatt a 23 tárolt törtbit a normál számoknál **24 értékes bináris jegyet** biztosít. A szignifikand | + | Az elhagyott első 1-est **rejtett vezető bitnek** nevezik. Emiatt a 23 tárolt törtbit a normál számoknál **24 értékes bináris jegyet** biztosít. A szignifikans |
| === Hogyan tárolunk negatív kitevőt? === | === Hogyan tárolunk negatív kitevőt? === | ||
| Line 288: | Line 288: | ||
| **13, | **13, | ||
| - | A valódi kitevő tehát **3**, a szignifikand | + | A valódi kitevő tehát **3**, a szignifikáns |
| === 3. lépés: a kitevőmező === | === 3. lépés: a kitevőmező === | ||
| Line 324: | Line 324: | ||
| - A kitevőmező '' | - A kitevőmező '' | ||
| - A törtmező elé visszaírjuk a rejtett 1-est: '' | - A törtmező elé visszaírjuk a rejtett 1-est: '' | ||
| - | - A szignifikand | + | - A szignifikáns |
| - Megszorozzuk 2< | - Megszorozzuk 2< | ||
| - Alkalmazzuk a negatív előjelet: **−13, | - Alkalmazzuk a negatív előjelet: **−13, | ||
| Line 349: | Line 349: | ||
| | '' | | '' | ||
| - | Visszaolvasva a szignifikand | + | Visszaolvasva a szignifikáns |
| ==== 12. Miért nem minden szám tárolható pontosan? ==== | ==== 12. Miért nem minden szám tárolható pontosan? ==== | ||
| Line 466: | Line 466: | ||
| - Csak az előjelbit változik 0-ról 1-re. | - Csak az előjelbit változik 0-ról 1-re. | ||
| - A 0,1 bináris alakja végtelen szakaszos tört, a tárolható bitek száma pedig véges. | - A 0,1 bináris alakja végtelen szakaszos tört, a tárolható bitek száma pedig véges. | ||
| - | - A tartomány a nagyságrendet korlátozza, | + | - A tartomány a nagyságrendet korlátozza, |
| ==== Források és további olvasnivaló ==== | ==== Források és további olvasnivaló ==== | ||
| Line 473: | Line 473: | ||
| * [[https:// | * [[https:// | ||
| - | A jegyzet az egész számok és az IEEE 754 bináris formátumainak alapjait tárgyalja. A szabvány további formátumaira és részletes műveleti szabályaira nem tér ki. | ||
| + | < | ||
| + | <div id=" | ||
| + | < | ||
| + | #szam-demo { | ||
| + | max-width: 1000px; | ||
| + | margin: 20px auto; | ||
| + | padding: 22px; | ||
| + | box-sizing: border-box; | ||
| + | border: 1px solid #cbd5e1; | ||
| + | border-radius: | ||
| + | background: #f8fafc; | ||
| + | color: #172033; | ||
| + | font: 16px/1.6 Arial, sans-serif; | ||
| + | } | ||
| + | #szam-demo * { box-sizing: border-box; } | ||
| + | #szam-demo h3 { margin: 0 0 12px; color: #172033; } | ||
| + | #szam-demo p { margin: 10px 0; } | ||
| + | #szam-demo button, | ||
| + | #szam-demo input { | ||
| + | font: inherit; | ||
| + | } | ||
| + | #szam-demo button { | ||
| + | padding: 8px 13px; | ||
| + | border: 1px solid #94a3b8; | ||
| + | border-radius: | ||
| + | background: white; | ||
| + | color: #172033; | ||
| + | cursor: pointer; | ||
| + | } | ||
| + | #szam-demo button: | ||
| + | #szam-demo button: | ||
| + | #szam-demo input: | ||
| + | outline: 3px solid #2563eb; | ||
| + | outline-offset: | ||
| + | } | ||
| + | #szam-demo .navigation, | ||
| + | #szam-demo .controls, | ||
| + | #szam-demo .presets { | ||
| + | display: flex; | ||
| + | flex-wrap: wrap; | ||
| + | gap: 8px; | ||
| + | align-items: | ||
| + | margin-bottom: | ||
| + | } | ||
| + | #szam-demo .navigation button[aria-pressed=" | ||
| + | background: #1e40af; | ||
| + | border-color: | ||
| + | color: white; | ||
| + | } | ||
| + | #szam-demo input[type=" | ||
| + | #szam-demo input[type=" | ||
| + | width: 180px; | ||
| + | max-width: 100%; | ||
| + | padding: 8px; | ||
| + | border: 1px solid #94a3b8; | ||
| + | border-radius: | ||
| + | background: white; | ||
| + | color: #172033; | ||
| + | } | ||
| + | #szam-demo input[type=" | ||
| + | display: block; | ||
| + | width: 100%; | ||
| + | margin: 18px 0; | ||
| + | accent-color: | ||
| + | } | ||
| + | #szam-demo .bits { | ||
| + | display: flex; | ||
| + | flex-wrap: wrap; | ||
| + | gap: 5px; | ||
| + | margin: 10px 0; | ||
| + | } | ||
| + | #szam-demo .bit { | ||
| + | width: 44px; | ||
| + | min-height: 48px; | ||
| + | padding: 5px; | ||
| + | font: bold 20px monospace; | ||
| + | } | ||
| + | #szam-demo .bit[aria-pressed=" | ||
| + | background: #1e40af; | ||
| + | color: white; | ||
| + | border-color: | ||
| + | } | ||
| + | #szam-demo .bit small { | ||
| + | display: block; | ||
| + | font: 11px Arial, sans-serif; | ||
| + | } | ||
| + | #szam-demo .result { | ||
| + | margin: 14px 0; | ||
| + | padding: 14px; | ||
| + | border-left: | ||
| + | border-radius: | ||
| + | background: #eaf1ff; | ||
| + | overflow-wrap: | ||
| + | } | ||
| + | #szam-demo .mono { | ||
| + | font-family: | ||
| + | overflow-wrap: | ||
| + | } | ||
| + | #szam-demo .error { | ||
| + | color: #a61b1b; | ||
| + | font-weight: | ||
| + | } | ||
| + | #szam-demo .hint { | ||
| + | color: #475569; | ||
| + | font-size: 14px; | ||
| + | } | ||
| + | #szam-demo .field { | ||
| + | margin-top: 16px; | ||
| + | padding: 12px; | ||
| + | border-radius: | ||
| + | background: white; | ||
| + | border: 1px solid #dbe3ed; | ||
| + | } | ||
| + | #szam-demo .field-title { font-weight: | ||
| + | #szam-demo [hidden] { display: none !important; } | ||
| + | @media (max-width: 500px) { | ||
| + | #szam-demo { padding: 12px; } | ||
| + | #szam-demo .bit { width: 38px; } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <div class=" | ||
| + | <button type=" | ||
| + | Negatív egész számok | ||
| + | </ | ||
| + | <button type=" | ||
| + | IEEE 754 lebegőpontos számok | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <section data-section=" | ||
| + | < | ||
| + | <p> | ||
| + | Kattints a bitekre! Ugyanazt a bitsorozatot előjel nélküli | ||
| + | egészként és kettes komplemens szerint is értelmezzük. | ||
| + | </p> | ||
| + | |||
| + | <div class=" | ||
| + | <label for=" | ||
| + | <input id=" | ||
| + | | ||
| + | <button type=" | ||
| + | </ | ||
| + | |||
| + | <input data-role=" | ||
| + | | ||
| + | | ||
| + | |||
| + | <div class=" | ||
| + | <button type=" | ||
| + | <button type=" | ||
| + | <button type=" | ||
| + | <button type=" | ||
| + | <button type=" | ||
| + | <button type=" | ||
| + | </ | ||
| + | |||
| + | <div data-role=" | ||
| + | | ||
| + | |||
| + | <div class=" | ||
| + | < | ||
| + | < | ||
| + | <strong data-role=" | ||
| + | </ | ||
| + | <div data-role=" | ||
| + | </ | ||
| + | |||
| + | <p data-role=" | ||
| + | |||
| + | <div class=" | ||
| + | <button type=" | ||
| + | Adjunk hozzá 1-et! | ||
| + | </ | ||
| + | <button type=" | ||
| + | Bitek megfordítása és +1 | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <p data-role=" | ||
| + | |||
| + | <p class=" | ||
| + | Próbáld ki: állíts be 127-et, majd adj hozzá 1-et! | ||
| + | A demonstráció nyolc bitet tart meg. | ||
| + | </p> | ||
| + | </ | ||
| + | |||
| + | <section data-section=" | ||
| + | < | ||
| + | <p> | ||
| + | Írj be egy számot, vagy válassz példát! | ||
| + | A program IEEE 754 binary32 formátumra alakítja. | ||
| + | A kapott biteket külön is átkapcsolhatod. | ||
| + | </p> | ||
| + | |||
| + | <div class=" | ||
| + | <label for=" | ||
| + | <input id=" | ||
| + | | ||
| + | <button type=" | ||
| + | </ | ||
| + | |||
| + | <div class=" | ||
| + | <button type=" | ||
| + | <button type=" | ||
| + | <button type=" | ||
| + | <button type=" | ||
| + | <button type=" | ||
| + | <button type=" | ||
| + | <button type=" | ||
| + | <button type=" | ||
| + | </ | ||
| + | |||
| + | <p data-role=" | ||
| + | |||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div data-role=" | ||
| + | <div data-role=" | ||
| + | </ | ||
| + | |||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div data-role=" | ||
| + | <div data-role=" | ||
| + | </ | ||
| + | |||
| + | <div class=" | ||
| + | <div class=" | ||
| + | <div data-role=" | ||
| + | <div data-role=" | ||
| + | </ | ||
| + | |||
| + | <div class=" | ||
| + | < | ||
| + | <div data-role=" | ||
| + | <div> | ||
| + | Tárolt érték: | ||
| + | <strong data-role=" | ||
| + | </ | ||
| + | <div class=" | ||
| + | A véges, nem nulla értéket 17 értékes decimális jegyre írjuk ki. | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <p class=" | ||
| + | A 0,1 példán figyeld meg a kerekítést! | ||
| + | Normál számnál a tárolt törtbitek elé egy rejtett 1-es kerül. | ||
| + | Nulla és szubnormális szám esetén a vezető bit 0. | ||
| + | </p> | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | (function () { | ||
| + | "use strict"; | ||
| + | |||
| + | const root = document.getElementById(" | ||
| + | if (!root || root.dataset.initialized) return; | ||
| + | root.dataset.initialized = " | ||
| + | |||
| + | const el = name => root.querySelector(' | ||
| + | const intInput = root.querySelector("# | ||
| + | const floatInput = root.querySelector("# | ||
| + | |||
| + | let byte = 251; | ||
| + | let word = 0; | ||
| + | |||
| + | const buffer = new ArrayBuffer(4); | ||
| + | const view = new DataView(buffer); | ||
| + | |||
| + | function signedValue() { | ||
| + | return byte < 128 ? byte : byte - 256; | ||
| + | } | ||
| + | |||
| + | function numberText(value) { | ||
| + | if (Number.isNaN(value)) return " | ||
| + | if (value === Infinity) return " | ||
| + | if (value === -Infinity) return " | ||
| + | if (Object.is(value, | ||
| + | return String(value).replace(" | ||
| + | } | ||
| + | |||
| + | function preciseText(value) { | ||
| + | if (!Number.isFinite(value) || value === 0) { | ||
| + | return numberText(value); | ||
| + | } | ||
| + | return value.toPrecision(17).replace(" | ||
| + | } | ||
| + | |||
| + | function makeBit(container, | ||
| + | const button = document.createElement(" | ||
| + | button.type = " | ||
| + | button.className = " | ||
| + | |||
| + | const digit = document.createElement(" | ||
| + | button.appendChild(digit); | ||
| + | |||
| + | if (weight !== undefined) { | ||
| + | const label = document.createElement(" | ||
| + | label.textContent = weight; | ||
| + | button.appendChild(label); | ||
| + | } | ||
| + | |||
| + | button.addEventListener(" | ||
| + | container.appendChild(button); | ||
| + | |||
| + | return {button, digit, position}; | ||
| + | } | ||
| + | |||
| + | const intBits = []; | ||
| + | for (let p = 7; p >= 0; p--) { | ||
| + | intBits.push(makeBit( | ||
| + | el(" | ||
| + | p, | ||
| + | function () { | ||
| + | byte ^= 1 << p; | ||
| + | clearIntegerMessage(); | ||
| + | renderInteger(); | ||
| + | }, | ||
| + | p === 7 ? " | ||
| + | )); | ||
| + | } | ||
| + | |||
| + | function clearIntegerMessage() { | ||
| + | el(" | ||
| + | el(" | ||
| + | } | ||
| + | |||
| + | function renderInteger() { | ||
| + | const value = signedValue(); | ||
| + | |||
| + | intInput.value = value; | ||
| + | el(" | ||
| + | |||
| + | intBits.forEach(item => { | ||
| + | const bit = (byte >>> | ||
| + | item.digit.textContent = bit; | ||
| + | item.button.setAttribute(" | ||
| + | item.button.setAttribute( | ||
| + | " | ||
| + | item.position + ". bit: " + bit + ", átkapcsolás" | ||
| + | ); | ||
| + | }); | ||
| + | |||
| + | el(" | ||
| + | el(" | ||
| + | |||
| + | const terms = []; | ||
| + | for (let p = 7; p >= 0; p--) { | ||
| + | if ((byte >>> | ||
| + | terms.push(p === 7 ? " | ||
| + | } | ||
| + | } | ||
| + | el(" | ||
| + | (terms.length ? terms.join(" | ||
| + | |||
| + | el(" | ||
| + | ? "Az első bit 1. Előjel nélküli értékéből 256-ot kivonva: " + | ||
| + | byte + " − 256 = " + value + | ||
| + | ". Az első bit itt −128 súlyú, nem külön mínuszjel." | ||
| + | : "Az első bit 0. A két értelmezés ugyanazt a nemnegatív számot adja."; | ||
| + | } | ||
| + | |||
| + | function setInteger(value) { | ||
| + | if (!Number.isInteger(value) || value < -128 || value > 127) { | ||
| + | el(" | ||
| + | " | ||
| + | el(" | ||
| + | return; | ||
| + | } | ||
| + | byte = value & 255; | ||
| + | clearIntegerMessage(); | ||
| + | renderInteger(); | ||
| + | } | ||
| + | |||
| + | root.querySelector(' | ||
| + | .addEventListener(" | ||
| + | |||
| + | intInput.addEventListener(" | ||
| + | if (event.key === " | ||
| + | }); | ||
| + | |||
| + | el(" | ||
| + | setInteger(Number(event.target.value)); | ||
| + | }); | ||
| + | |||
| + | root.querySelectorAll(" | ||
| + | button.addEventListener(" | ||
| + | setInteger(Number(button.dataset.int)); | ||
| + | }); | ||
| + | }); | ||
| + | |||
| + | root.querySelector(' | ||
| + | .addEventListener(" | ||
| + | const before = signedValue(); | ||
| + | byte = (byte + 1) & 255; | ||
| + | renderInteger(); | ||
| + | |||
| + | el(" | ||
| + | el(" | ||
| + | ? " | ||
| + | "A megtartott 10000000 bitminta előjelesen −128." | ||
| + | : before + " + 1 = " + signedValue() + | ||
| + | ". Az eredmény belefér a nyolcbites előjeles tartományba."; | ||
| + | }); | ||
| + | |||
| + | root.querySelector(' | ||
| + | .addEventListener(" | ||
| + | const before = signedValue(); | ||
| + | const original = byte.toString(2).padStart(8, | ||
| + | const inverted = ((~byte) & 255).toString(2).padStart(8, | ||
| + | |||
| + | byte = ((~byte) + 1) & 255; | ||
| + | renderInteger(); | ||
| + | |||
| + | el(" | ||
| + | el(" | ||
| + | original + " → megfordítva: | ||
| + | " → +1: " + byte.toString(2).padStart(8, | ||
| + | (before === -128 | ||
| + | ? ". Túlcsordulás: | ||
| + | : ". Az új előjeles érték: " + signedValue() + " | ||
| + | }); | ||
| + | |||
| + | const floatBits = []; | ||
| + | |||
| + | function addFloatBits(container, | ||
| + | for (let p = high; p >= low; p--) { | ||
| + | floatBits.push(makeBit(container, | ||
| + | word = (word ^ (1 << p)) >>> | ||
| + | el(" | ||
| + | " | ||
| + | el(" | ||
| + | renderFloat(true); | ||
| + | })); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | addFloatBits(el(" | ||
| + | addFloatBits(el(" | ||
| + | addFloatBits(el(" | ||
| + | |||
| + | function renderFloat(updateInput) { | ||
| + | view.setUint32(0, | ||
| + | const value = view.getFloat32(0, | ||
| + | |||
| + | const sign = word >>> | ||
| + | const exponent = (word >>> | ||
| + | const fraction = word & 0x7fffff; | ||
| + | const fractionBits = fraction.toString(2).padStart(23, | ||
| + | |||
| + | floatBits.forEach(item => { | ||
| + | const bit = (word >>> | ||
| + | item.digit.textContent = bit; | ||
| + | item.button.setAttribute(" | ||
| + | item.button.setAttribute( | ||
| + | " | ||
| + | item.position + ". bit: " + bit + ", átkapcsolás" | ||
| + | ); | ||
| + | }); | ||
| + | |||
| + | el(" | ||
| + | ? "s = 1: negatív előjel. NaN esetén ez nem számszerű előjel." | ||
| + | : "s = 0: pozitív előjel. NaN esetén ez nem számszerű előjel."; | ||
| + | |||
| + | el(" | ||
| + | "A 23 bit előjel nélküli egész értéke: F = " + fraction + " | ||
| + | |||
| + | let classification; | ||
| + | let formula; | ||
| + | |||
| + | if (exponent === 255) { | ||
| + | el(" | ||
| + | "E = 255: különleges érték; nem alkalmazzuk az E − 127 szabályt."; | ||
| + | |||
| + | classification = fraction === 0 ? " | ||
| + | formula = fraction === 0 | ||
| + | ? "Csupa 1-es kitevő és nulla törtrész: " + numberText(value) | ||
| + | : "Csupa 1-es kitevő és nem nulla törtrész: NaN."; | ||
| + | } else if (exponent === 0) { | ||
| + | el(" | ||
| + | "E = 0: nulla vagy szubnormális szám. A skálázás 2⁻¹²⁶, | ||
| + | "a vezető bit 0."; | ||
| + | |||
| + | classification = fraction === 0 ? " | ||
| + | formula = fraction === 0 | ||
| + | ? "Nulla kitevő és nulla törtrész: " + numberText(value) | ||
| + | : (sign ? " | ||
| + | "₂ × 2^(−126)"; | ||
| + | } else { | ||
| + | const actualExponent = exponent - 127; | ||
| + | classification = " | ||
| + | |||
| + | el(" | ||
| + | "E = " + exponent + "; valódi kitevő: " + | ||
| + | exponent + " − 127 = " + actualExponent + " | ||
| + | |||
| + | formula = (sign ? " | ||
| + | "₂ × 2^(" + actualExponent + " | ||
| + | |||
| + | el(" | ||
| + | " A rejtett 1-essel a szignifikáns: | ||
| + | numberText(1 + fraction / 8388608) + " | ||
| + | } | ||
| + | |||
| + | el(" | ||
| + | el(" | ||
| + | el(" | ||
| + | |||
| + | if (updateInput) { | ||
| + | floatInput.value = Number.isNaN(value) | ||
| + | ? " | ||
| + | : Object.is(value, | ||
| + | } | ||
| + | } | ||
| + | |||
| + | function convertFloat() { | ||
| + | const text = floatInput.value.trim().replace(" | ||
| + | let value; | ||
| + | |||
| + | if (/ | ||
| + | value = NaN; | ||
| + | } else if (/ | ||
| + | value = Infinity; | ||
| + | } else if (/ | ||
| + | value = -Infinity; | ||
| + | } else if (/ | ||
| + | value = Number(text); | ||
| + | if (!Number.isFinite(value)) { | ||
| + | el(" | ||
| + | "A bemenet a böngésző számkezelési tartományán kívül esik."; | ||
| + | el(" | ||
| + | return; | ||
| + | } | ||
| + | } else { | ||
| + | el(" | ||
| + | " | ||
| + | el(" | ||
| + | return; | ||
| + | } | ||
| + | |||
| + | view.setFloat32(0, | ||
| + | word = view.getUint32(0, | ||
| + | const stored = view.getFloat32(0, | ||
| + | |||
| + | el(" | ||
| + | if (Number.isFinite(value) && !Number.isFinite(stored)) { | ||
| + | el(" | ||
| + | " | ||
| + | el(" | ||
| + | } else if (value !== 0 && stored === 0) { | ||
| + | el(" | ||
| + | "A szám túl kicsi: binary32-re kerekítve nulla lett."; | ||
| + | } else if (Number.isFinite(value) && stored !== value) { | ||
| + | el(" | ||
| + | " | ||
| + | } else { | ||
| + | el(" | ||
| + | "A beolvasott érték binary32-re alakításakor nem történt további kerekítés."; | ||
| + | } | ||
| + | |||
| + | if (!Number.isFinite(value)) { | ||
| + | el(" | ||
| + | } | ||
| + | |||
| + | renderFloat(false); | ||
| + | } | ||
| + | |||
| + | root.querySelector(' | ||
| + | .addEventListener(" | ||
| + | |||
| + | floatInput.addEventListener(" | ||
| + | if (event.key === " | ||
| + | }); | ||
| + | |||
| + | root.querySelectorAll(" | ||
| + | button.addEventListener(" | ||
| + | floatInput.value = button.dataset.float; | ||
| + | convertFloat(); | ||
| + | }); | ||
| + | }); | ||
| + | |||
| + | root.querySelectorAll(" | ||
| + | button.addEventListener(" | ||
| + | root.querySelectorAll(" | ||
| + | tab.setAttribute(" | ||
| + | }); | ||
| + | root.querySelectorAll(" | ||
| + | section.hidden = section.dataset.section !== button.dataset.panel; | ||
| + | }); | ||
| + | }); | ||
| + | }); | ||
| + | |||
| + | renderInteger(); | ||
| + | convertFloat(); | ||
| + | })(); | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
tanszek/oktatas/szamitastechnika/szamabrazolas.1790885785.txt.gz · Last modified: by knehez
