平常使用的話用toString(2),或者parseInt(要轉換的數字,2)便可轉換為二進制。這里用原生代碼實現一下十進制轉二進制。
<body>
<input id="dec-number" type="number" placeholder="輸入一個十進制非負數">
<button id="trans-btn">轉化為二進制</button>
<p id="result">運算結果</p>
<script>
function trans(){
var dec_number=document.getElementById("dec-number").value;//獲得輸入的值
var str=dec_number+"";//將值轉換為字符串
if(isNaN(Number(str))){//判斷輸入值是否是數字(因為input標簽已經確定type為number,所以這個判斷是不必要的)
console.log("輸入一個十進制非負數錯誤");
mistake();
}else if(dec_number==0){//判斷輸入值是否等於零
console.log("輸入十進制為0");
zero();
}else if(str.indexOf(".")==-1){//判斷輸入值是否是整數
console.log("所輸入數據為十進制非負整數")
integer();
}else if(str.indexOf(".")!=-1){//判斷輸入值是否是小數
console.log("所輸入數據為實際值非負小數");
decimal();
}
}
function mistake(){
document.getElementById("result").innerHTML="所輸入十進制非負數錯誤";
}
function zero(){
document.getElementById("result").innerHTML=0;
}
function integer(){
var dec_number=document.getElementById("dec-number").value;//獲取值
var quotient=dec_number;//用於儲存商的值
var remainder;//用於存儲余數
var bin_array=[];//用於儲存余數並編排
while(quotient!=1){
remainder=quotient%2;
quotient=Math.floor(quotient/2);
bin_array.unshift(remainder);//將得到的余數插入數組的前排
}
bin_array.unshift(1);
document.getElementById("result").innerHTML=(bin_array.join(""));
}
function decimal(){
var dec_number=document.getElementById("dec-number").value;
var int_number=dec_number.toString().substring(0,((dec_number.toString()).indexOf(".")));//獲取小數點之前的數字,即整數部分
var decimal_number=parseFloat("0"+"."+dec_number.substring((((dec_number.toString()).indexOf("."))+1)));//獲取小數點之后的數字,即小數部分
var int_quotient=int_number;//用於儲存整數部分的商的值
var int_remainder;//用於存儲整數部分的余數
var int_bin_array=[];//用於儲存整數部分的余數並編排
var dec_product;//用於儲存小數部分的乘積的值
var dec_difference=decimal_number;//用於儲存小數部分的差的值
var dec_bin_array=[];//用於儲存小數部分的商並編排
if(dec_number>1){//小數大於1時
//整數部分的二進制轉換
while(int_quotient!=1){
int_remainder=int_quotient%2;
int_quotient=Math.floor(int_quotient/2);
int_bin_array.unshift(int_remainder);
}
int_bin_array.unshift(1);
var int_bin_number=int_bin_array.join("");
//小數部分的二進制轉換
var i=0;
while(dec_difference!=0||i<20){//i<20考慮的是無限小數的情況,限定只允許20位小數
dec_product=Math.floor(dec_difference*2);
if((dec_difference*2)<1){
dec_difference=dec_difference*2;
}else{
dec_difference=dec_difference*2-1;
}
dec_bin_array.push(dec_product);
i++;
}
var result=Number(int_bin_number+"."+dec_bin_array.join(""));
}else{
var i=0;
while(dec_difference!=0||i<20){//i<20考慮的是無限小數的情況,限定只允許20位小數
dec_product=Math.floor(dec_difference*2);
if((dec_difference*2)<1){
dec_difference=dec_difference*2;
}else{
dec_difference=dec_difference*2-1;
}
dec_bin_array.push(dec_product);
i++;
}
var result=Number("0"+"."+dec_bin_array.join(""));
}
document.getElementById("result").innerHTML=result;
}
document.getElementById("trans-btn").addEventListener("click",trans);
// 實現當點擊轉化按鈕時,將輸入的十進制數字轉化為二進制,並顯示在result的p標簽內
</script>
</body>
