跳至主要內容
Lizely

科學記號轉換器

將精確的十進位文字在科學記號、工程記號與完整十進位記號之間相互轉換,不使用二進位浮點數四捨五入。

隱私權:你的檔案不會離開裝置,所有處理均在瀏覽器本機完成。

使用方式

  1. 1.輸入一個常見的十進位或 e/E 科學值,使用點作為小數分隔符,不使用逗號或單位。
  2. 2.選擇「轉換記號」以產生標準化的科學記號、工程記號與完整小數值。
  3. 3.檢視明確的限制,然後使用對應的複製按鈕複製你需要的精確輸出形式。

關於科學記號轉換器

科學記號轉換器會將一個精確的基數 10 值,在標準化科學記號、工程記號與完整十進位記號之間轉換。輸入如 12345 或 0.00123 的常見十進位,或使用 e/E 指數形式如 -4.2e-7。轉換器會同時返回三種形式,並為每種結果提供獨立的複製按鈕。解析、標準化、十進位擴充套件與剪貼簿準備皆在當前瀏覽器標籤頁完成。不會上傳任何內容,也沒有使用帳戶、API 或第三方計算服務。

解析器設計上極為嚴格。它接受可選的正負號、小數位數含可選的小數點,以及一個可選的 e 或 E 指數,包含一個帶符號的整數。例如 1,000、1、000、十六進位、數值分隔符、無限大、NaN、重複的小數點、缺失的指數位數或嵌入的空白皆被拒絕。周圍的空白字元會被移除。當數字後面跟著小數點時,點前導是合法的,例如 .5 是有效的;但單獨的點則不合法。小數點後面跟著數字的尾點也是語法上合法的。不合法的輸入僅返回一個錯誤,不會進行部分轉換。

轉換過程不會將係數透過 JavaScript 數值傳遞。相反,它會將小數位數作為文字串合併,找出第一個非零數字,使用精確的 BigInt 整數運算調整明確的指數,並使用字串位置來放置小數點。這避免了常見的二進位浮點數與安全整數損失。例如,9007199254740993 會精確保留為 9007199254740993,即使它大於 Number.MAX_SAFE_INTEGER。任何非零係數位數皆不會被四捨五入、截斷或替換。

輸出使用標準的數值形式。前導零填充、尾導零填充、輸入中帶有明確正號、以及零上帶負號皆不改變數值,並會被移除。因此 -0.000e999999 會變成 0e+0 與小數 0,而 001.2300e+2 會變成 1.23e+2、123e+0 與 123。這是值的標準化,而非有效數位分析。若尾隨零意在傳達測量精確度,應另存原始測量記錄;本轉換器不會從格式推斷不確定性或有效數位意圖。

標準化科學記號僅保留一個非零數字在小數點前,並帶有整數的十進位制冪。介面使用緊湊的 e 記號,因此 12345 會變成 1.2345e+4。正指數永遠顯示正號,以避免在複製到程式碼、電子表格或計算器時產生混淆。零使用單一標準形式 0e+0,因為零的標準冪不唯一。

工程記號使用可被三整除的指數,非零值會留下一至三位數在小數點前。實作必須將科學記號的指數向下取整至下一較低的三的倍數,包括負數情況。這點很重要,因為整數除法向零方向是錯誤的:1e-5 會變成 10e-6,而不是 0.01e-3 或基於截斷向零的指數。同樣地,-4.2e-7 會變成 -420e-9。符號屬於值本身,不會改變指數分組規則。

完整十進位輸出會將小數點移至精確位置,並插入所有所需的零。它從不使用省略號、使用縮略預覽,或靜默僅返回前導內容。為保持瀏覽器的響應性,完整十進位字串有明確的 100,000 位元組限制。若結果正好達到該限制,則會被接受。若擴充套件需要多出一個位元組,整個轉換將失敗並顯示明確錯誤;科學與工程輸出不會被視為轉換完成。此路徑中不會有任何四捨五入或截斷。

輸入與輸出的限制是分離的。原始輸入限制為 20,000 UTF-16 位元組,且係數最多包含 10,000 個小數位數。這些限制約束正規表示式處理、BigInt 指數解析、標準化、渲染與剪貼簿記憶體。指數仍可遠大於 JavaScript 安全整數,因為它們使用 BigInt 來解析。極大的指數會以決定性方式處理:零會立即標準化,非零值若其完整小數擴充套件超出預設預算,則會被拒絕。

編輯輸入會立即清除之前的轉換結果、錯誤訊息與剪貼簿狀態。遲到的剪貼簿承諾無法為較舊的值發出訊息,因為每次編輯、轉換與複製操作都會提升一個工作識別碼。元件清理會標記待處理工作為不活躍,防止非同步剪貼簿完成更新未掛載的頁面。剪貼簿權限仍可能被拒絕;若發生此情況,頁面將報告失敗,而非聲稱成功。

測試涵蓋十個獨立計算的公式基點,涵蓋正負值、正負指數、工程偏移、大寫 E、前導點小數、以及零填充。額外案例涵蓋標準零與負零、超過 Number.MAX_SAFE_INTEGER 的整數、非零數位的精確保留、語法拒絕、係數限制、原始輸入限制、完整小數輸出的邊界、一單位溢位、剪貼簿成功與拒絕。所有產生的科學、工程與小數形式都會回饋至相同的標準化模組以驗證標準輸出的穩定性。本工具僅進行記號轉換,不會四捨五入、選擇有效數位、附加 SI 字首、評估算術表示式、解析地區特定分隔符,或估算不確定性。

方法與來源

語法嚴格區分符號、整數位數、小數位數,以及可選的帶符號 e/E 指數。係數從不進入數值範疇。第一個非零數字確立標準科學指數;前導與尾隨的零補位將被移除,所有非零數字則保持精確。科學格式輸出僅保留小數點前一位數字。工程格式則將指數取整為三的倍數,並在小數點前顯示一至三位數字。完整小數輸出透過字串切片操作移動小數點,僅在確知輸出長度不超過 100,000 字元單位時,才會明確插入零。BigInt 負責處理指數運算。測試強制執行 10 外部公式樁點、標準化重歸一化、零值規則、大整數精確性、嚴格錯誤語法、10,000 係數位數、20,000 輸入字元單位、小數輸出在極限值及超出一單位的情況,以及剪貼簿失敗行為。

常見問題

大整數會損失精確度嗎?
不會。係數位數以十進位字串形式標準化,而非轉換為 JavaScript 數值,因此超過 Number.MAX_SAFE_INTEGER 的值仍能保留所有非零位數。
工程記號與科學記號有何不同?
科學記號保留小數點前一個非零數字。工程記號使用可被三整除的指數,非零值會留下一至三位數在小數點前。
為何會移除前導與尾導零?
輸出是標準數值轉換,而非有效數位或不確定性工具。零填充不會改變數值。若這些零用以傳達測量精確度,應另存原始格式。
當完整小數擴充套件極其長時會發生什麼?
完整小數輸出限制為 100,000 位元組。若精確擴充套件超出此預算,整個轉換將返回錯誤,且不會有任何靜默截斷或部分顯示。

計算工具 使用指南

查看全部