IEEE 754 浮點數轉換器
將十進位值轉換為 IEEE 754 二進位32 或 二進位64 欄位,並可將精確的位元組或十六進位模式解碼回瀏覽器數值。
隱私權:你的檔案不會離開裝置,所有處理均在瀏覽器本機完成。
使用方式
- 1.選擇「十進位到位元」或「位元/十六進位到十進位」,並選擇二進位32 或二進位64。
- 2.輸入一個值,轉換並檢視儲存的值、符號、指數、小數、分類、位元與十六進位表示。
- 3.複製十六進位值並與實際消費端的精確度與位元序對照,再使用於協議或檔案中。
關於IEEE 754 浮點數轉換器
IEEE 754 浮點數轉換器顯示瀏覽器儲存的二進位32 單精確度或二進位64 雙精確度位元組模式。選擇「十進位到位元」或「位元到十進位」,選擇格式,輸入值,並檢視儲存的數值、十六進位表示、符號、指數、小數、分類以及無偏指數。所有轉換皆透過瀏覽器的 DataView API 完成。
十進位制輸入接受普通十進位記法,並允許選擇性符號、分數與指數。它也接受 Infinity、-Infinity 與 NaN。十六進位數字字面、運算式、逗號、單位與地區特定小數分隔符號則被拒絕。這讓數字解析更加明確,並避免 JavaScript 的隱式轉換,例如將空字串視為零或接受十六進位字元作為十進位值。
對於 binary32,顯示會將 32 位元拆分為一個符號位元、八個指數位元與 23 分數位元。對於 binary64,則會將 64 位元拆分為一個符號位元、11 個指數位元與 52 個分數位元。十六進位數字以最高有效位元為先顯示,binary32 顯示恰好八位元,binary64 則顯示 16 個位元。複製動作會複製這些十六進位數字,並去除 0x 標籤。
編碼會透過 DataView.setFloat32 或 DataView.setFloat64 以大端序位元組順序寫入 JavaScript 數字,然後讀取儲存的值。因此,binary32 會顯示當 binary64 的 JavaScript 輸入被壓縮至單精度時所產生的四捨五入。binary64 會反映瀏覽器的雙精度交換值,而非原始十進位制寫法或任意精度十進位制運算。
解碼接受正好 32 或 64 的二進位制位元,或正好八或 16 的十六進位位元,並允許選擇性 0x 字首作為十六進位。它會將這些位元寫入 ArrayBuffer 並讀取對應的浮點數。此路徑會在顯示中保留輸入的符號、指數與小數部分。JavaScript 仍會將所有 NaN 值顯示為 NaN,因此即使輸入的位元仍然可見,無法透過數值單獨區分不同的 NaN 載入內容。
若指數全為零且小數為零,則分類為零;若小數非零則為次正常數(subnormal)。指數非零且小於全1模式則為正常數。若指數全為1且小數為零則為無限大,若小數非零則為 NaN。無偏指數為指數減去 127(正常二進位32)或減去 1023(正常二進位64)。次正常數使用「1減去偏移量」來計算。
在大多數算術運算中,正零和負零比較時結果相同,但它們的符號位元不同,且在某些運算如倒數時會產生不同的結果。本頁會保留輸入或解碼時的 -0。無限大與 NaN 是特殊的值,不是具有有限無偏指數的普通數字。這個工具會報告它們的分類,而不是 inventing 一個誤導性的指數。
十進位到二進位的轉換不能證明某個十進位值是精確的。許多十進位分數(包括 0.1)需要無限長的二進位展開,並會捨入至最接近的可表示值。大整數在二進位64 中可能損失單位精確度,而二進位32 的精確度損失會更早發生。若應用領域需要精確的金額、識別碼或任意精確度,建議使用十進位或整數庫。
八個外部測試案例涵蓋二進位32 的「1」、「負零」、「正無限大」、「最大有限值」、「最小正次正常數」,以及二進位64 的「1」、「負零」與「π」。其他測試還包含次正常數、無限大、NaN 與二進位輸入邊界解碼。請將位元組與實際消費端(語言、檔案格式、網路協定或硬體規格)對照,因為位元序與精確度是該協議或規格的一部分。
方法與來源
使用大端序的 DataView 浮點數讀取與寫入,提取固定長度的二進位32 或二進位64 符號/指數/小數位元,根據指數與小數模式分類為零/次正常數/正常數/無限大/NaN,並讀取回舍入後的儲存值,不進行手動近似轉換。
常見問題
- 為何二進位32 會改變我的十進位值?
- JavaScript 首先解析雙精確度數值,再透過 DataView 舍入至最接近的可表示二進位32 值,儲存的值即為此縮減結果。
- 為何有兩個零?
- IEEE 754 定義了正零與負零,具有不同的符號位元。它們在一般比較中相等,但在某些運算中可能表現不同。
- 解碼會保留 NaN 輸入的位元嗎?
- 輸入的位元會保留顯示,但 ECMAScript 對 NaN 值的處理並無法保證不同位元組的 NaN 值能被區分為數值。
相關工具
- 程式員計算器檢視 ECMAScript 32-bit 的 AND、OR、XOR、NOT 與移位運算結果,同時以有符號、無符號、十六進位及二進位形式顯示。
- 二進位轉文字文字轉換為二進位,並能將二進位轉迴文字,支援完整的 Unicode(UTF-8)功能,且所有運算皆在你的瀏覽器中執行。
- ASCII 轉換器將標準 7 位 ASCII 文字轉換為十進位碼,或將十進位碼解碼為精確的 ASCII 字元本機執行。
- Base64 編碼 / 解碼立即在瀏覽器中編碼或解碼 Base64,完整支援 UTF-8 — 表情符號和重音字元都能使用。
- ANSI 色彩碼產生器建立並複製原始 SGR 逸出序列,並搜尋標準 8 色加亮 8 色的終端機色碼。
- ASCII 表格查詢所有標準 7 位 ASCII 編碼的精確十進位、十六進位、八進位與二進位值。
開發者工具 使用指南
查看全部- Convert Decimal Numbers to IEEE 754 Floating Point Format (英文原文)
- How to Base Convert IEEE 754 Floating Point (英文原文)
- Convert .properties Files to JSON Online (英文原文)
- Random MAC Address On or Off: A Developer Guide (英文原文)
- Generate a JWT for Testing: HS256 Tokens in Your Browser (英文原文)
- How to Decode JWT Tokens in Angular Apps (英文原文)
- JSON Schema to Zod: Inference Limits and a Safer Path (英文原文)
- Rust: Convert a Struct to a JSON String With serde (英文原文)
- How to Convert JSON to Excel in Python (英文原文)
- JSON to CSV Alternative With Built-In Formula Protection (英文原文)
- Format a JSON File in VS Code and in Your Browser (英文原文)
- Local JavaScript Playground Alternative for Safe Testing (英文原文)
- How to Convert IPv4 to a 32-Bit Integer for Storage (英文原文)
- HTTP Status Codes Alternative: A Registry-First Lookup (英文原文)
- How to Edit HTML in a Browser Using a Sandboxed Preview (英文原文)
- Format HTML Code from Notepad++ Without Plugins (英文原文)
- Why Is Hello World Used in Programming: A Practical Guide (英文原文)
- How to Make Flexbox Items Fill the Container Height (英文原文)
- File Signatures List Alternative: Twelve Verified Prefixes (英文原文)
- How to Open Excel Files Online in a Browser Preview (英文原文)