计算器 — 鸿蒙ArkTS完整四则运算引擎与表达式解析
2026/8/7 12:06:20 网站建设 项目流程

一、应用概述

1.1 应用简介

计算器(Calculator)是一款功能完整的科学计算器应用。支持加减乘除四则运算、连续运算、历史记录、内存存储等功能。该应用深入展示了ArkTS框架中的表达式解析算法、状态驱动的UI更新、历史记录管理和边界条件处理技术。

1.2 核心功能

功能模块功能描述技术实现
数字输入多位数字和浮点数字符串拼接
四则运算加减乘除运算运算引擎
连续运算多步连续计算状态保持
历史记录计算历史查看数组存储
内存功能MC/MR/M+/M-独立存储
清空功能C/CE/退格状态重置

二、运算引擎

2.1 核心算法

classCalculatorEngine{privatedisplay:string='0';privatepreviousValue:number=0;privatecurrentValue:string='';privateoperator:string='';privateisNewInput:boolean=true;privatememory:number=0;privatehistory:string[]=[];inputDigit(digit:string):void{if(this.isNewInput){this.currentValue=digit;this.display=digit;this.isNewInput=false;}else{if(this.currentValue.length>=15)return;this.currentValue+=digit;this.display=this.currentValue;}}inputDecimal():void{if(this.isNewInput){this.currentValue='0.';this.display='0.';this.isNewInput=false;return;}if(this.currentValue.includes('.'))return;this.currentValue+='.';this.display=this.currentValue;}performOperation(op:string):void{if(this.operator&&!this.isNewInput){this.calculate();}else{this.previousValue=parseFloat(this.display);}this.operator=op;this.isNewInput=true;}calculate():void{constcurrent=parseFloat(this.currentValue);letresult=0;switch(this.operator){case'+':result=this.previousValue+current;break;case'-':result=this.previousValue-current;break;case'×':result=this.previousValue*current;break;case'÷':result=current!==0?this.previousValue/current:0;break;}this.display=result.toString();this.previousValue=result;this.currentValue=result.toString();this.history.push(this.previousValue+' '+this.operator+' '+current+' = '+result);}}

三、UI布局设计

3.1 按钮网格

build(){Column(){// 显示区域Text(this.display).fontSize(40).textAlign(TextAlign.End).width('90%').padding(10)// 功能按钮行Row(){ForEach(['MC','MR','M+','M-'],(btn:string)=>{Button(btn).fontSize(12).width(60).height(40).onClick(()=>this.memoryOperation(btn))})}// 数字按钮ForEach(this.buttons,(row:string[])=>{Row(){ForEach(row,(btn:string)=>{Button(btn).width(btn==='0'?130:60).height(55).fontSize(22).backgroundColor(this.getButtonColor(btn)).fontColor(this.getButtonTextColor(btn)).borderRadius(12).margin(3).onClick(()=>this.onButtonClick(btn))})}})}}

四、边界条件处理

4.1 异常处理

handleEdgeCases():void{// 除零处理if(this.operator==='÷'&&parseFloat(this.currentValue)===0){this.display='Error';this.resetState();return;}// 数值溢出if(this.display.length>15){this.display=parseFloat(this.display).toExponential(6);}// 连续小数点if(this.currentValue.includes('.')&&this.lastInput==='.')return;}

五、总结

5.1 核心技术

  1. 运算引擎算法
  2. 状态驱动的UI
  3. 边界条件处理
  4. 历史记录管理
  5. 内存存储功能

5.2 扩展方向

  1. 科学计算功能
  2. 进制转换
  3. 单位换算集成
  4. 表达式历史
  5. 自定义主题

    需要专业的网站建设服务?

    联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

    立即咨询