🛝Toolio
關於 聯絡

🧮 線上計算器 — 免費,支援歷史記錄與鍵盤支援

Toolio 的計算器可處理加、減、乘、除和百分比,並可保存瀏覽器中最近 50 個結果的可滾動歷史記錄 — 沒有任何科學計算功能,也沒有括號或記憶鍵(M+、M-、MR),因為這些按鈕在介面中並不存在。內部運行著一個真正的運算子優先級解析器,但螢幕上的按鈕每次只會傳送一個運算給解析器,因此按下 2 + 3 x 4 = 的行為會像一般桌面計算器一樣,返回 20,而不是嚴格遵循代數運算順序所得到的 14。每個結果在顯示前都會四捨五入到 12 個有效數字,因此 0.1 + 0.2 會顯示乾淨的 0.3,而不是 JavaScript 原始的 0.30000000000000004。

Toolio 的計算器是一款基於瀏覽器的四則運算計算器 — 加、減、乘、除和百分比,具有 50 個記錄的歷史功能,並支援完整鍵盤操作,完全離線運行。

 
0
歷史記錄
尚無歷史記錄

隱私優先設計. 此工具完全在您的瀏覽器中運行 — 您輸入的內容不會上傳或儲存,而且它可以在離線狀態下使用。

關於

這個計算器的功能 — 以及不具備的功能

按鈕網格提供 AC、退格、%、除、乘、減、加、數字 0-9、小數點和等於 — 這就是完整的功能集。沒有平方根、指數、三角函數、括號或記憶寄存器;如果你需要這些功能,這不是適合你的工具。鍵盤與按鈕一一對應:數字鍵、+、-、*、/、Enter 或 = 用於等於、Backspace、Escape 用於清除、% 用於百分比,所有這些都連接到一個單一的監聽器,當你在頁面上輸入其他輸入欄時,這個監聽器會自動讓出空間。

數學運算的原理

運算子優先級的運作方式與許多人預期的「計算器」行為不同。在內部,工具會建立一個運算式字串,並使用正確的「Shunting-yard」算法來評估它,這個算法確實會在加減之前處理乘除 — 但按鈕介面每次只會將一個運算子和兩個數字傳遞給評估器。具體來說:按下 2、+、3、x、4、=,以下是逐步發生的過程 — 按下 + 會將 2 存為待處理的左值;按下 3 設定下一個數字;按下 x 會強制立即評估待處理的 2 + 3(因為在結果尚未處理完時又出現了一個新運算子),得出 5,這成為新的左值;按下 4 設定下一個數字;按下 = 評估 5 x 4 並顯示 20。如果計算器對整個輸入鏈應用完整的運算順序,會顯示 14(2 + 12)而不是 20。這種鏈式行為與一般四則運算計算器(大多數手機標準模式內建的那種)相符,而不是科學或表達式計算器,這也是類似工具收到「錯誤答案」報告的最常見原因。

浮點數處理是另一個導致顯示數字與實際計算數字產生差異的地方。二進位浮點數無法精確表示大多數十進位分數,因此 JavaScript 會將 0.1 + 0.2 計算為 0.30000000000000004,而 100 x 1.1 計算為 110.00000000000001。在任何結果顯示之前,工具會將所有結果四捨五入到 12 個有效數字,這會將這兩個結果靜默地轉換為人類預期的乾淨 0.3 和 110。不過,這種修正也有實際限制:像 999999999999999 這樣的 15 位整數會因為相同的 12 位數字截斷而四捨五入為 1000000000000000,這會將一個精確的整數轉換為另一個不同的精確整數,純粹是因為顯示四捨五入,而不是浮點數的缺陷。一旦結果的數量級達到約 1e21,JavaScript 自身的數字格式會切換為指數表示法(1e+21),不管 12 位數字四捨五入會顯示什麼。

一些較小的防護措施補充了行為:除以零會在內部觸發錯誤,顯示器會顯示本地化的「錯誤」訊息,而不是 Infinity 或 NaN,並清除待處理的運算,讓你可以重新開始;在輸入時,原始數字輸入長度上限為 15 個字符(退格鍵仍然可以正常地將其減少到一個 0);百分比按鈕根據上下文進行處理 — 如果有待處理的運算,按下 % 會計算儲存值的百分比(200、+、10、% 顯示 20,然後按下 = 會得到 220);如果沒有待處理的運算,按下 % 只會將當前顯示除以 100。

計算歷史 — 最近 50 次,儲存在您的瀏覽器中

歷史功能會在瀏覽器的 localStorage 中保存最近 50 個計算,位於這個工具自己的命名空間下;第 51 個計算會靜默地刪除最舊的條目。點選歷史面板中的任何條目會將該結果和運算式重新顯示在螢幕上,讓你可以繼續計算;清除歷史會立即刪除列表,並顯示一個確認訊息。因為是 localStorage,歷史記錄與這個特定瀏覽器和設備綁定 — 它不會在隱私/無痕模式下打開的標籤頁之間、瀏覽器之間或設備之間同步。

如何使用

  1. 使用鍵盤或點選螢幕上的數字按鈕輸入數字。
  2. 按下 +、-、x 或 /(或對應的鍵盤鍵)來選擇運算;按下第二個運算子會立即評估待處理的運算。
  3. 使用 % 來處理百分比:如果有待處理的運算,它會計算儲存值的百分比(200、+、10、% 然後 = 會得到 220);如果沒有待處理的運算,它會將當前顯示除以 100。
  4. 按下 Enter 或 = 來查看最終結果 — 它會自動保存到歷史記錄中,並四捨五入到 12 個有效數字以供顯示。
  5. 點選歷史面板中的任何條目,可以恢復該結果及其運算式,然後繼續計算。
  6. 按下 Escape 或點選 AC 來清除所有內容,或按下 Backspace 來刪除最後輸入的數字。

常見問題

0.1 + 0.2 這裡實際上顯示的是 0.3,還是通常的浮點數混亂?
這裡顯示的是乾淨的 0.3。JavaScript 會將原始總和計算為 0.30000000000000004,因為二進位浮點數無法精確表示 0.1 或 0.2,但這個計算器會在顯示前將每個結果四捨五入到 12 個有效數字,這會隱藏這種缺陷,讓日常數字看起來乾淨。
如果我輸入 2 + 3 x 4 =,會得到 14 還是 20?
你會得到 20。當按下運算子時,如果之前還有待處理的運算,會立即評估那個待處理的步驟(2 + 3 = 5),然後下一個運算子會應用到這個結果(5 x 4 = 20)。這是普通四則運算計算器的標準行為,而不是錯誤 — 如果是科學計算器對輸入的鏈條應用完整的運算順序,會得到 14。
有科學模式、括號或記憶鍵(M+/M-/MR)嗎?
沒有。這是一款四則運算計算器,加上百分比和歷史功能 — 介面中沒有三角函數、指數、平方根、括號或記憶寄存器。如果你需要這些功能,這個特定工具不是為此設計的。
它會上傳我的計算嗎?
不會。所有的計算都在你的瀏覽器中進行,歷史記錄只保存在瀏覽器的 localStorage 中。沒有任何內容會上傳到伺服器,而且這個工具即使在完全沒有網路連接的情況下也能正常運作。
對於非常大或非常精確的數字會發生什麼?
結果在顯示前會四捨五入到 12 個有效數字,這可能會靜默地改變一個精確的大整數 — 例如,15 位數的 999999999999999 會顯示為 1000000000000000。一旦結果的數量級達到約 1e21,顯示會切換為指數表示法(如 1e+21),不管四捨五入會顯示什麼。
如果我除以零會發生什麼?
計算器會明確地捕捉到這個錯誤,並顯示本地化的「錯誤」訊息,而不是 Infinity 或 NaN,然後清除待處理的運算,讓你可以立即開始新的計算。
此工具會上傳我的資料嗎?
不會。所有運作都在您的瀏覽器中進行,因此您的資料永遠不會離開您的設備 — 頁面載入後,它甚至可以在離線狀態下使用。