支持四則運算的計算器的實現算法


1.      四則運算的實現算法

  a.      對於一個輸入表達式,分別找到表達式中  "*" , "/" , "+" , "-" 在表達式中的位置。

  b.      如果“*",“/“ 符號存在,則位置靠前的運算符為當前選定運算符。

  c.      如果“*",“/“ 符號不存在,則位置靠前的 "+" 或者  "- " 為當前選定運算符。

  d.      從選定運算符的左邊向左遍歷,截取左操作數,遇到新的運算符或者表達式的第一個字符,則遍歷結束。取得左操作數,並記下左操作數的起始位置。

  e.      同理,獲取右操作數,並記下右操作數的結束位置。

  f.       將左右操作數參與運算的結果,插入回原來表達式 (替換掉左操作數的起始位置 和 右操作數的結束位置之間)

  g.      返回,繼續按照同樣的順序計算,直到當前表達式不含有加減乘除運算符,則認為運算結束。

2.      運算符號(+,-,*,/)的輸入響應

  a.      當前輸入字符串的最后一個字符如果不是數字,則將最后的字符替換成當前的字符。

3.      小數點的輸入響應

  a.      從當前輸入字符串末端開始獲取當前運算因數,如果當前運算因數為空,則在輸入字符串后拼接上"0.";

  b.      當前運算因數不為空,但是當前因數已經包含小數點,則忽略當前小數點;

  c.      當前運算因數不為空,並且未包含小數點,則在輸入字符串后加上小數點。

4.      等號的響應

  a.      計算最后結果,不是數字時(小數點或者運算符號),去掉最后一個字符;

5.      數字鍵的響應

  a.      上一次有效輸入是“=”,則應該先清空上一次的計算,開始新一輪的計算。

6.      Javascript 浮點數計算精度問題

  a.      0.2 + 0.1 結果不等於0.3. 原因跟計算機對於浮點數的編碼規則有關,計算機組成原理提到這個問題,具體細節忘了。

  b.      解決辦法:先將參與運算的操作數提升成整數,運算,然后再降低。

  c.      0.2 - > 2 , 0.1 -> 1, 0.3 -> 3

 程序地址: https://liujiangyi123.gitee.io/calculator-v2.0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM