最近研究漢諾塔非遞歸的時候,看到書上寫了個MOD,久違啊,感覺好久沒看到過了,都忘了怎么用了。
某人:我知道,這不就是取余嘛,直接%就行了。
嗯。。。。。。,如果是python語言,你說的很對,但是我要的是JS中的。搜了下,貌似JS中沒有MOD方法。便於學習的使用,自己寫了個。
廢話不多說,直接上代碼。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>MOD運算</title>
</head>
<body>
被除數:<input type="text" id="bcs"/>
除 數:<input type="text" id="cs"/>
結果:<span id="jg"></span>
<input type="button" value="MOD運算" onclick="modys()" />
<script>
function modys(){
var bcs = Number(document.getElementById("bcs").value);
var cs = Number(document.getElementById("cs").value);
if(cs == 0){
alert("除數不能為0");
return;
}
if((bcs < 0 && cs < 0) || (bcs >=0 && cs >= 0)){ //同號
if(parseInt(bcs) == bcs && parseInt(cs) == cs){ //全為整數
var jg = bcs%cs;
document.getElementById("jg").innerHTML = jg;
}else{
/**
* 被除數-(整商×除數)之后在第一位小數位進行四舍五入。
*/
var jg = (bcs - (Math.floor(bcs/cs) * cs)).toFixed(1);
document.getElementById("jg").innerHTML = jg;
}
}else{ //異號
/**
*
* 除數*(正整數商 + 1)- 正數的被除數 ,最后取除數的符號。
*/
var zbcs = Math.abs(bcs); //絕對值
var zcs = Math.abs(cs); //絕對值
var jg = Math.abs(Math.abs(cs) * (Math.floor(zbcs/zcs) + 1) - Math.abs(bcs));
if(cs < 0){
jg = -jg
}
document.getElementById("jg").innerHTML = jg;
}
}
</script>
</body>
</html>
注:1.沒有深度思考,按照百度百科的MOD運算介紹寫的,有錯誤請指出,謝謝。
2.對於小數沒有精確運算,可以自己用math.js寫個。
