色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

開發一個鴻蒙版仿蘋果計算器教程.附代碼

OpenHarmony技術社區 ? 來源:鴻蒙技術社區 ? 作者: 我曾是少年_ ? 2021-10-11 14:17 ? 次閱讀

眾所周知鴻蒙 JS 框架是非常輕量級的 MVVM 模式。通過使用和 Vue2 相似的屬性劫持技術實現了響應式系統。

學習鴻蒙很長時間了,想寫一個 demo 進行練練手,就選擇開發這個仿蘋果計算器程序。

先看效果圖:

23715caa-2a47-11ec-82a8-dac502259ad0.gif

2390ea70-2a47-11ec-82a8-dac502259ad0.gif

話不多說,上代碼

hml:
<divclass="container">
<divclass="header">
<textclass="{{outputClassName}}">{{output}}text>
div>
<divclass="keyboard">
<blockfor="{{keyArr}}">
<divif="{{$item=='0'}}"class="zeroKeys"onclick="onclickNubmer({{$item}})">
<text>
{{$item}}
text>
div>
<divelif="{{$item=='AC'||$item=='+/-'||$item=='%'}}"class="operatorKeys-top"onclick="onclickOper({{$item}})">
<text>
{{$item}}
text>
div>
<divelif="{{$item=='÷'||$item=='×'||$item=='-'||$item=='+'||$item=='='}}"class="operatorKeys-right"onclick="onclickOper({{$item}})">
<text>
{{$item}}
text>
div>
<divelseclass="keyskeys-nubmer"onclick="onclickNubmer({{$item}})">
<text>
{{$item}}
text>
div>
block>
div>
div>

css:

.container{
flex-direction:column;
background-color:#010101;
height:100%;
width:100%;
}

.header{
height:36%;
width:100%;
align-items:flex-end;
padding:2px20px2px10px;
}
.keyboard{
height:64%;
width:100%;
padding:2px10px;
flex-wrap:wrap;
}
.outputText,.outputTextSmall{
width:100%;
height:100px;
color:#FFFFFF;
text-align:end;
}
.outputText{
font-size:80px;
}
.outputTextSmall{
font-size:58px;
}
.keys,.zeroKeys,.operatorKeys-top,.operatorKeys-right{
width:74px;
height:74px;
justify-content:center;
align-items:center;
border-radius:74px;
margin:10px5px;
}
.keys-nubmer,.zeroKeys{
background-color:#333333;
}
.zeroKeys{
width:158px;
}
.operatorKeys-top{
background-color:#a4a4a4;
}
.operatorKeys-right{
background-color:#f79f31;
}
.keys:active,.zeroKeys:active{
background-color:#737373;
}
.keystext,.zeroKeystext,.operatorKeys-righttext{
font-size:42px;
color:#FFFFFF;
}
.operatorKeys-toptext{
font-size:36px;
color:#010101;
}
.operatorKeys-top:active{
background-color:#d9d9d9;
}
.operatorKeys-right:active{
background-color:#f5c891;
}

js:

import{math}from"../../common/js/utils.js";
exportdefault{
data:{
output:"0",
outputClassName:"outputText",
cache:[],//記錄輸入內容
keyArr:["AC","+/-","%","÷","7","8","9","×","4","5","6","-","1","2","3","+","0",".","="],
reOper:"",//記錄點擊的運算符
reStr1:"",//記錄第一次輸入內容
reStr2:"",//記錄點擊運算符后的內容
bool:false//防止第二次輸入內容時內容清空
},
onInit(){
this.$watch("output","watchOutPut")
},
onclickOper(item){
if(item=="AC"){
this.clearComput();
}elseif(item=="+"||item=="-"||item=="×"||item=="÷"){
this.reOper=item;
this.reStr1=this.output;
if(this.cache.length>0){
this.startCompute();
}
this.cache.push(this.reStr1);
}elseif(item=="+/-"){
this.output="-"+this.output;
}elseif(item=="%"){
this.output=math.accDiv(this.output,100);
}elseif(item=="="){
this.reStr2=this.output;
this.cache.push(this.reStr2);
this.startCompute();
}
},
onclickNubmer(item){
if(this.cache.length>0&&!this.bool){
this.output="0";
this.bool=true;
}
if(this.output=="0"&&item!="."){
this.output=item;
}elseif(item=="."){
if(this.output.indexOf(".")==-1){
if(this.output=="0"){
this.output="0."
}else{
this.output+=item;
}
}
}else{
if(this.output.length10){
this.output+=item;
}
}
},
watchOutPut(nVal){
if(nVal.length>7&&nVal.length10){
this.outputClassName="outputTextSmall";
}else{
this.outputClassName="outputText";
}
},
startCompute(){
switch(this.reOper){
case"+":
this.output=math.accAdd(this.reStr1,this.reStr2);
this.reStr1=this.output;
break;
case"-":
this.output=math.accSub(this.reStr1,this.reStr2);
this.reStr1=this.output;
break;
case"×":
this.output=math.accMul(this.reStr1,this.reStr2);
this.reStr1=this.output;
break;
case"÷":
this.output=math.accDiv(this.reStr1,this.reStr2);
this.reStr1=this.output;
break;
default:
break;
}
},
clearComput(){
this.output="0";
this.reOper="";
this.reStr1="";
this.reStr2="";
this.cache=[];
this.bool=false;
}
}

utils.js:

classMathCalss{
//js精準除法函數
accDiv(arg1,arg2){
lett1=0,
t2=0,
r1,
r2;
try{
t1=arg1.toString().split('.')[1].length;
}catch(e){}
try{
t2=arg2.toString().split('.')[1].length;
}catch(e){}
r1=Number(arg1.toString().replace('.',''));
r2=Number(arg2.toString().replace('.',''));
return(r1/r2)*Math.pow(10,t2-t1);
}

//js精準加法函數
accAdd(arg1,arg2){
varr1,r2,m,c;
try{
r1=arg1.toString().split(".")[1].length;
}
catch(e){
r1=0;
}
try{
r2=arg2.toString().split(".")[1].length;
}
catch(e){
r2=0;
}
c=Math.abs(r1-r2);
m=Math.pow(10,Math.max(r1,r2));
if(c>0){
varcm=Math.pow(10,c);
if(r1>r2){
arg1=Number(arg1.toString().replace(".",""));
arg2=Number(arg2.toString().replace(".",""))*cm;
}else{
arg1=Number(arg1.toString().replace(".",""))*cm;
arg2=Number(arg2.toString().replace(".",""));
}
}else{
arg1=Number(arg1.toString().replace(".",""));
arg2=Number(arg2.toString().replace(".",""));
}
return(arg1+arg2)/m;
}
//js精準減法函數
accSub(arg1,arg2){
letr1,r2,m,n;
try{
r1=arg1.toString().split('.')[1].length;
}catch(e){
r1=0;
}
try{
r2=arg2.toString().split('.')[1].length;
}catch(e){
r2=0;
}
m=Math.pow(10,Math.max(r1,r2));
//動態控制精度長度
n=r1>=r2?r1:r2;
return(arg1*m-arg2*m)/m;
}
//js精準乘法函數
accMul(arg1,arg2){
varm=0,s1=arg1.toString(),s2=arg2.toString();
try{
m+=s1.split(".")[1].length;
}
catch(e){
}
try{
m+=s2.split(".")[1].length;
}
catch(e){
}
returnNumber(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);
}
}

exportvarmath=newMathCalss();

為了解決浮點數計算失準問題,我使用一些解決計算失準的函數可供大家參考。
編輯:jq
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4345

    瀏覽量

    62884
  • 代碼
    +關注

    關注

    30

    文章

    4823

    瀏覽量

    68904
  • CSS
    CSS
    +關注

    關注

    0

    文章

    110

    瀏覽量

    14404
  • 鴻蒙
    +關注

    關注

    57

    文章

    2392

    瀏覽量

    42980

原文標題:開發一個鴻蒙版仿蘋果計算器

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    鴻蒙原生開發手記:04-完整元服務案例

    影院熱映 分享完整的元服務案例,這個案例高仿了豆瓣的小程序。 簡介 整個元服務分為 4-5 頁面,首頁為列表頁,展示了當前影院熱門的電影,點開是
    發表于 12-27 10:35

    VirtualLab Fusion應用:相干時間和相干長度計算器

    摘要 在本用例中,我們介紹了計算器,它可以根據給定光源的波譜信息快速估計其時間相干特性。然后,可以將該計算器的結果自動復制到通用探測中,以便在考慮時間相干性時應用近似方法,而無需
    發表于 12-27 08:48

    LP光纖模式計算器

    :漸變折射率 (GRIN) 光纖 光纖模式計算器允許定義線性偏振貝塞爾模式和線性偏振拉蓋爾模式。 對于 GRIN 光纖,定義了梯度常數。 然后通過下式計算折射率 與前種情況樣,
    發表于 12-18 13:36

    使用DRV421進行設計:系統參數計算器

    電子發燒友網站提供《使用DRV421進行設計:系統參數計算器.pdf》資料免費下載
    發表于 10-26 09:52 ?0次下載
    使用DRV421進行設計:系統參數<b class='flag-5'>計算器</b>

    基于FPGA的計算器設計

    本文通過FPGA實現8位十進制數的加、減、乘、除運算,通過矩陣鍵盤輸入數據和運算符,矩陣鍵盤的布局圖如下所示。該計算器可以進行連續運算,當按下等號后,可以直接按數字進行下次運算,或者按運算符,把上次運算結果作為本次運算的第一個操作數。
    的頭像 發表于 10-24 14:28 ?709次閱讀
    基于FPGA的<b class='flag-5'>計算器</b>設計

    CAN位時序參數計算器

    電子發燒友網站提供《CAN位時序參數計算器.pdf》資料免費下載
    發表于 10-11 09:55 ?1次下載
    CAN位時序參數<b class='flag-5'>計算器</b>

    色環電阻計算器的研究與應用

    理想的色環電阻計算器的界面應該包含顏色選擇,讓用戶能夠通過點擊或下拉菜單選擇各個顏色環
    的頭像 發表于 09-18 13:45 ?405次閱讀

    平平無奇計算器:520能對你說多少次?

    5月是愛人愛己愛勞動的月份剛剛過去的5月20日小滿遇見520,人生小滿勝萬全情侶們說“愛意恰逢其時”計算器對小白說“520”……噠噠噠本期測評產品為:簡易計算器
    的頭像 發表于 05-25 08:04 ?762次閱讀
    平平無奇<b class='flag-5'>計算器</b>:520能對你說多少次?

    最新開源代碼證實!“鴻蒙原生版”微信正在積極開發

    遷移到另一個操作系統平臺的時間和成本會非常高。 目前看來,微信的鴻蒙原生版確實正在開發中,并且已經取得了定的進展。這對于鴻蒙操作系統的推廣
    發表于 05-08 17:08

    HarmonyOS開發案例:【計算器

    基于基礎組件、容器組件,實現支持加減乘除混合運算的計算器
    的頭像 發表于 05-07 15:31 ?1431次閱讀
    HarmonyOS<b class='flag-5'>開發</b>案例:【<b class='flag-5'>計算器</b>】

    蘋果將為iPad推出原生計算器應用

    早前,IT之家曾披露,此次蘋果還計劃對macOS系統內的計算器應用進行功能升級,這是該軟件近10年來的首次重大設計變革。據悉,蘋果正在內部測試款名為“GreyParrot”的全新
    的頭像 發表于 04-24 14:10 ?487次閱讀

    OpenHarmony開發案例:【分布式計算器

    使用分布式能力實現了簡單的計算器應用,可以進行簡單的數值計算,支持遠程拉起另一個設備的計算器
    的頭像 發表于 04-11 15:24 ?1084次閱讀
    OpenHarmony<b class='flag-5'>開發</b>案例:【分布式<b class='flag-5'>計算器</b>】

    AWTK 開源串口屏開發(13) - 計算器應用

    計算器常見的應用程序,在AWTK串口屏中,利用fscript表達式計算函數,無需編寫行傳統的代碼
    的頭像 發表于 03-16 08:23 ?5981次閱讀
    AWTK 開源串口屏<b class='flag-5'>開發</b>(13) - <b class='flag-5'>計算器</b>應用

    使用 Taro 開發鴻蒙原生應用 —— 快速上手,鴻蒙應用開發指南

    鴻蒙原生應用。 在 《使用 Taro 開發鴻蒙原生應用》 系列文章中,我們已經介紹了 鴻蒙的基本概念 和 Taro 適配鴻蒙的原理。本文作
    的頭像 發表于 02-02 16:09 ?934次閱讀
    使用 Taro <b class='flag-5'>開發</b><b class='flag-5'>鴻蒙</b>原生應用 —— 快速上手,<b class='flag-5'>鴻蒙</b>應用<b class='flag-5'>開發</b>指南

    鴻蒙開發用什么語言?

    兩種開發方向 我們常說鴻蒙開發,但是其實鴻蒙開發分為兩方向:
    的頭像 發表于 01-30 16:12 ?1615次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>用什么語言?
    主站蜘蛛池模板: 中文字幕亚洲无线码高清不卡 | 无码国产伦一区二区三区视频 | 黑人巨茎vide抽搐 | 视频一区二区中文字幕 | 日韩精品 中文字幕 有码 | 亚洲国产在线精品国自产拍五月 | 亚洲免费三级电影 | 一个人免费播放高清在线观看 | 2021国产精品国产精华 | 果冻传媒视频在线播放 免费观看 | 国产 欧美 亚洲 日韩视频 | 欧美成人一区二免费视频 | 中文字幕无码亚洲视频 | 伊人成综合网伊人222 | 秋霞电影院兔费理论观频84mb | 女人高潮了拔出来了她什么感觉 | 24小时日本在线观看片免费 | 久久夜色精品国产亚州AV卜 | 亚洲日韩天堂在线中文字幕 | 暖暖免费观看日本在线视频 | 狠狠色色综合站 | 综合色就爱涩涩涩综合婷婷 | 久久精品视频在线看99 | 日本高清不卡一区久久精品 | 老司机午夜影院味味 | 亚洲精品AV无码重口另类 | 超碰视频在线观看 | 中文字幕在线观看国产 | 无码天堂亚洲内射精品课堂 | 久久综合丁香激情久久 | 第一会所欧美无码原创 | 99精品国产免费观看视频 | 久久伊人网站 | 激情床戏揉胸吃胸视频 | 欧美高清videossexo | 俄罗斯大肥BBXX | 欧美大片xxxxbbbb | 护士日本ⅹxxx丰满hd | 欧美一区二区三区男同 | 在线 自拍 综合 亚洲 欧美 | 性色AV一区二区三区V视界影院 |