做了一個(gè)簡易的計(jì)算器。
成都創(chuàng)新互聯(lián)公司是專業(yè)的仁布網(wǎng)站建設(shè)公司,仁布接單;提供成都網(wǎng)站建設(shè)、做網(wǎng)站,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行仁布網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
但是JavaScript運(yùn)算加減法是存在自身的問題,簡易自己編寫運(yùn)算的插件,
或是用網(wǎng)絡(luò)提供的。
script????
window.onload=function?(){????
var?oText1=document.getElementById('txt1');????
var?oText2=document.getElementById('txt2');????
var?oSel=document.getElementById('sel1');????
var?oBtn=document.getElementById('btn');????
oBtn.onclick=function?(){????
var?n1=parseFloat(oText1.value);????
var?n2=parseFloat(oText2.value);????
var?a=oSel.value;????
'12+5'????
var?res=0;????
switch?(a)????
{????
case?'+':????
res=n1+n2;????
break;????
case?'-':????
res=n1-n2;????
break;????
case?'*':????
res=n1*n2;????
break;????
case?'/':????
res=n1/n2;????
break;????
}????
alert(res);????
};????
};????
/script????
/head????
body????
input?type="text"?id="txt1"?/????
select?id="sel1"????
option?value="+"+/option????
option?value="-"-/option????
option?value="*"*/option????
option?value="/"http://option????
/select????
input?type="text"?id="txt2"?/????
input?type="button"?value="計(jì)算"?id="btn"?/????
/body
不用的,$("#button_num").val()會(huì)自動(dòng)轉(zhuǎn)化成number類型的
$("#button_num").val()-1就可以了
但是做加法就不同了
如果運(yùn)算中有一個(gè)是字符串,就會(huì)按字符串拼接運(yùn)算,但是1是不需要轉(zhuǎn)型的
parseInt($("#button_num").val())+1就可以
希望采納
一直知道js的浮點(diǎn)數(shù)計(jì)算是不精確的, 0.1 + 0.2 !== 0.3,但是也就知道而已,解決方法卻不怎么注意,所以剛做一個(gè)項(xiàng)目,盡管了解浮點(diǎn)數(shù)精度不精確的問題,但是還是掉坑里了。在此再次默默告訴自己要警惕,端正心態(tài),不可掉以輕心?。?!所以下面就分享一些加減乘除的方法。
原理: 把數(shù)字轉(zhuǎn)換成字符串,然后從小數(shù)點(diǎn)部分切割成兩部分,分別算出兩個(gè)因數(shù)的小數(shù)點(diǎn)右邊的長度,然后用兩個(gè)因數(shù)的小數(shù)點(diǎn)右邊長度最大的數(shù)再乘以10,相當(dāng)于兩個(gè)都放大了n倍,然后相加,然后縮小n倍。
注意,這里的放大用了乘法times函數(shù)(下面介紹),因?yàn)楦↑c(diǎn)數(shù)直接乘以100有可能出現(xiàn)精度不夠的情況,如下圖
原理和加法一樣,放大n倍后相減再縮小n倍
乘法原理稍微變點(diǎn),放大倍數(shù)n是 ‘兩個(gè)小數(shù)點(diǎn)后面長度之和’ 而不是 ‘兩個(gè)小數(shù)點(diǎn)后面長度這兩者之間的最大值’
除法原理和乘法一樣
這也是一個(gè)坑,比如你要保留兩位小數(shù),四舍五入的話就要看小數(shù)點(diǎn)第三位后面的數(shù)字來決定,如2.445四舍五入后就是2.45; 2.444四舍五入就是2.44;做這個(gè)需求的時(shí)候,我第一反應(yīng)是Math.toFixed(2),結(jié)果是bug百出啊,這里就不舉例了,有興趣可以自己嘗試。然后我是怎么解決的呢?百度了一下,也是得到一些半成品不嚴(yán)謹(jǐn)?shù)暮瘮?shù),原理也很簡單,先放大倍數(shù),然后利用Math.round()取整
以上加減乘除方法基本滿足一般業(yè)務(wù)需求了,尤其是電商。但是如果數(shù)字計(jì)算時(shí)超出了 2的1024次方減1 ,也就是 9007199254740992 這個(gè)數(shù)字的話就不適合了,因?yàn)閺?2^1024 開始就變成了 Infinity。
方法只有一種:
直接使用減號(hào)運(yùn)算符進(jìn)行減法運(yùn)算
舉例:
var?a=2;
var?b=1;
var?c=a-b;//這里通過減號(hào)運(yùn)算符進(jìn)行減法運(yùn)算
使用加減乘除的運(yùn)算符即可 + - * /
例如:
var?a=2;b=6;
var?c;
c=a+b;?//c的結(jié)果為8
c=b-a;?//c的結(jié)果為4
c=a*b;?//c的結(jié)果為12
c=b/a;?//c的結(jié)果為3
這個(gè)是最簡單的加減乘除
如題,開始查了查js的使用文檔,但沒發(fā)現(xiàn)可以直接用的函數(shù),于是就想自己寫函數(shù)來著,這就要涉及到每個(gè)月天數(shù)的判斷,如果是2月份的話,還要涉及到閏年的判斷,雖然不復(fù)雜但我想js應(yīng)該不會(huì)這么低級(jí),于是查了下資料,終于有了如下重大發(fā)現(xiàn),以在某個(gè)日期上加減天數(shù)來說,其實(shí)只要調(diào)用Date對(duì)象的setDate()函數(shù)就可以了,具體方法如下:
function addDate(date,days){
var d=new Date(date);
d.setDate(d.getDate()+days);
var m=d.getMonth()+1;
return d.getFullYear()+'-'+m+'-'+d.getDate();
}
其中,date參數(shù)是要進(jìn)行加減的日期,days參數(shù)是要加減的天數(shù),如果往前算就傳入負(fù)數(shù),往后算就傳入正數(shù),如果是要進(jìn)行月份的加減,就調(diào)用setMonth()和getMonth()就可以了,需要注意的是返回的月份是從0開始計(jì)算的,也就是說返回的月份要比實(shí)際月份少一個(gè)月,因此要相應(yīng)的加上1。
分享文章:javascript加減,js直接用來加減乘除有問題嗎
文章轉(zhuǎn)載:http://www.rwnh.cn/article16/dscdddg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、靜態(tài)網(wǎng)站、外貿(mào)建站、App設(shè)計(jì)、App開發(fā)、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)