科學計算器
科學表達式計算器,冪與階乘、三角與對數、角度弧度切換、Ans 記憶與一行一式批次求值
① 表达式求值
三个约定:「%」就是把数字除以 100,所以 200×10% = 20,要「涨 10%」请写 200*(1+10%);相邻的量会自动相乘,2pi、3(4+1)、(2)(3) 都能算;函数括号可省,sin30 等同于 sin(30)。数字里的千分位逗号可用,如 1,000/8。
② 历史记录(点击任意一条可回到输入框)
还没有计算记录,算一次就会出现在这里
③ 一批表达式一起算
批量计算沿用 ① 里的角度单位与保留位数设置;Ans 在批量模式下取上一次单条计算的结果。每行必须是完整表达式,不能只写运算符。
工具介紹
普通計算器算不了 12!/(5!*7!),線上語言裡的 eval 又不敢用。這個工具把表達式解析成詞法與後綴式再求值,輸入什麼就算什麼,並把每一步口徑寫清楚:
- 完整表達式求值:四則、括號、冪、階乘、百分號、取餘混寫都可以,
2+3*4得 14,(2+3)*4得 20,(2+3)*sqrt(16)/2^3得 2.5 - 科學與工程寫法:
1e3+1得 1001、2E-2得 0.02、1,000,000/8/7認千分位逗號得 17857.1428571 - 可以省括號與乘號:
2pi= 6.28318530718、3(4+1)= 15、sin30等同sin(30)、√9= 3、∛(-27)= -3 - 角度制與弧度制一鍵切換:DEG 下
sin(30)= 0.5、acos(0.5)= 60;切到 RAD 後sin(30)= -0.988031624093,反三角的輸出單位也同步變化 - 結果的多重表達:同時給出千分位結果、雙精度原始值、科學計數法、整數部分、小數位數、三種取整與最簡分數近似
- Ans 與記憶鍵:Ans 引用上一次結果,存 MS/取 MR/清 MC 做分步運算,「把結果接進新表達式」可直接續算
- 歷史記錄:最近 20 條算式與結果,點任意一條回到輸入框改數字重算
- 批次求值:一行一個表達式一起算,某一行出錯不影響其他行,出錯原因寫在同列說明欄
- 異常都講原因:括號未閉合會說明還差幾個右括號,
1/0、√-4、ln(0)、tan(90)、171!、(-8)^0.5各有對應的提示
使用情境
- 把長算式一次寫清:組合數、等比數列求和、複利終值這類連鎖按鍵算不了的式子
- 驗證公式:先手算再讓工具複核,避免括號與優先級寫錯
- 批次核對一組資料:從表格或筆記貼一批表達式逐行出結果
- 教學示範:解釋冪右結合、負號與開方的優先級、角度制與弧度制的差別
- 工程與統計:雙曲函數、以 2 為底的對數、取餘與階乘混合使用
支援的寫法
| 寫法 | 含義 | 實測結果 |
|---|---|---|
| 2+3*4 | 先乘後加 | 14 |
| 2^10 與 2**10 | 冪,兩種寫法等價 | 1024 |
| 2^3^2 | 冪右結合,先算 3^2 | 512(不是 64) |
| -2^2 | 冪優先於一元負號 | -4,寫 (-2)^2 才是 4 |
| 5! 與 fact(5) | 階乘 | 120 |
| 10% 與 200*(1+10%) | 百分號即除以 100 | 0.1 與 220 |
| 100 mod 7 | 取餘 | 2 |
| 12!/(5!*7!) | 組合數直接寫 | 792 |
| 3(4+1)、2pi、(2)(3) | 相鄰的量自動相乘 | 15、6.28318530718、6 |
| 1,000/8 | 千分位逗號 | 125 |
| sin30 + 1 | 無括號函數只吃掉緊跟的那個數 | 1.5(不是 sin(31)) |
| ans*2 | 引用上一次結果 | 上一次為 21 時得 42 |
運算優先級由先到後
- 括號
( ):改變優先級最直接的方式,未閉合時會提示還差幾個右括號 - 後綴運算
!%:緊貼前面的數,2^3!是 2^6 = 64 - 冪
^:右結合,比一元負號更緊 - 一元正負號
-3、+5:可以連續寫,3 - -2= 5 - 乘、除、取餘
*/mod:含隱式乘法,左結合 - 加、減
+-:最低,左結合,100-20-30= 50
函數與常數
| 類別 | 名稱 | 已核對的例子 |
|---|---|---|
| 三角與反三角 | sin cos tan asin acos atan | DEG:cos(60)+sin(30) = 1、asin(0.5) = 30 |
| 雙曲 | sinh cosh tanh | cosh(0) = 1、sinh(0) = 0 |
| 冪與根 | ^ ** sqrt √ cbrt ∛ | 9^(1/2) = 3、sqrt(144)+3^2 = 21 |
| 對數與指數 | ln log lg log10 log2 exp | log(1000)+ln(e) = 4、log2(1024) = 10 |
| 取整與符號 | abs round floor ceil sign | round(2.5)+floor(2.5)+ceil(2.5) = 8 |
| 階乘與取餘 | ! fact mod | 5!+3! = 126、10 mod 3 = 1 |
| 角度換算 | degrees radians | degrees(pi/3) = 60、radians(180) = pi |
| 常數 | pi π e phi φ tau | π = 3.14159265359、e = 2.71828182846、φ = 1.61803398875、tau = 6.28318530718 |
常見問題
- 為什麼
-2^2等於 -4?數學裡 −x² 表示 −(x²),冪比一元負號先算。想讓負數自乘要寫(-2)^2= 4;同一條規則也解釋了2^3^2= 512 而不是 64 - 為什麼結果 0.3,原始值卻是 0.30000000000000004?這是雙精度浮點的固有表示誤差。自動模式取 12 位有效數字後再歸一,把雜訊壓掉;
sqrt(2)*sqrt(8)顯示 4 而原始值是 4.000000000000001,同一原因。要看真實誤差請對照「原始值」那一行 - 角度制還是弧度制?預設角度制,
sin(30)= 0.5;選弧度制後 30 被當作 30 弧度,sin(30)= -0.988031624093。反三角函數的輸出單位跟著走,acos(0.5)在角度制下是 60;degrees與radians這兩個函數不受開關影響,始終按弧度定義換算 sin(pi)為什麼不是 0?結果是1.224647e-16。π 只能用近似值表示,而正弦在 π 附近的變化率約為 −1,輸入誤差幾乎原樣變成輸出誤差。判斷是否為 0 要設容差,而不是期待整數- 階乘最大能算到幾?170! =
7.257416e+306,已經貼近雙精度上限約 1.8e308,171! 會直接報溢位;小數與負數階乘不做(那需要 Gamma 函數與複數支援)。組合數這類整數比值可以在溢位前先相消,寫成12!/(5!*7!)= 792 是安全的 - 百分號是什麼口徑?把數除以 100:
10%= 0.1,200×10%= 20。要「漲 10%」得寫200*(1+10%)= 220;每月漲 10% 一年下來的總漲幅是(1+10%)^12-1= 2.13842837672,即 213.84% - 它會不會執行我輸入的程式碼?不會。解析流程是先詞法切分、再補隱式乘法、然後用調度場演算法轉成後綴式逐條求值,全程沒有
eval也沒有動態建構函式,字母只認已登記的函數名與常數,其餘一律拒絕並指出位置 - 哪些寫法不支援?不支援多參數函數(要底數就寫
log2(8)或log(8)/log(2))、不支援變數賦值與自訂函數、不處理複數與無窮符號、不支援求和連乘記號;1e3會被辨識為 1000,想要 1×e×3 請寫1*e*3
配套工具:要把結果寫回精確分數做四則運算用分數計算,算佔比與漲跌幅用百分比計算,把複利終值展開成逐年明細用複利計算器,換算量綱用單位換算。表達式與結果都只在瀏覽器裡處理,不上傳伺服器。