開発環境 |
メモ帳 |
実行環境 |
Internet Explorer 11 |
recurring.html
<!doctype html>
<head>
<title>recurring</title>
<script>
function calc()
{
output.innerHTML = "";
var n = parseInt(numerator.value); // 分子
var d = parseInt(denominator.value); // 分母
output.innerHTML += n + "/" + d + "=<br>";
division(n, d);
}
// 除法
function division(n, d)
{
// 整数部分
var q = Math.floor(n / d); // quotient 商
var r = n - d * q; // remainder 剰余
output.innerHTML += q + ".";
// 小数部分
var m = [r]; // 剰余メモリー
var str = "";
Loop:
for (var i = 1; ; i++) {
r *= 10;
q = Math.floor(r / d);
r -= d * q;
str += q;
if (r <= 0) break; // 割り切れた
for (var j = 0; j < i; j++) {
if (m[j] == r) {
str = str.substr(0, j) + "(" + str.slice(j - i) + ")";
break Loop; // 循環小数
}
}
m[i] = r;
if (1000 <= i) {
output.innerHTML += "ループ回数オーバー<br>";
return;
}
}
output.innerHTML += str + "<br>";
}
</script>
</head>
<body>
整数同士の割算を行います。必要であれば循環小数(recurring decimal)で表記します。<br>
<input id="numerator" autofocus> /
<input id="denominator"><br>
<button onclick="calc()">計算</button><br>
<div id="output" style="word-wrap:break-word;"></div>
</body>
最終更新:2015年03月11日 16:34