数値の入力

華氏温度:

<script type="text/javascript">
function conv(x) {
  document.getElementById("fahrenheit").value = 1.8 * parseFloat(x.value) + 32;
}
</script>
<p><label for="celsius">摂氏温度:</label> <input id="celsius" onchange="conv(this);"></p>

<p>華氏温度: <input id="fahrenheit" readonly></p>

解説

数値を入力するには,いったん文字列を入力して,その中から数値を取り出すことになります。

文字列 s を整数に変換するには parseInt(s),浮動小数点の数値に変換するには parseFloat(s) を使います。それぞれ整数の英語 integer,浮動小数点の英語 floating point に因む名前です。

(おまけ)Collatzの問題

出力欄:

やっていることは,偶数なら2で割り,奇数なら3倍して1を加えることを繰り返しているだけです。

function collatz() {
  var x = parseInt(document.getElementById("input").value);
  var u = document.getElementById("output");
  while (x > 1) {
    var t = document.createTextNode(x + ' → ');
    u.appendChild(t);
    if (x % 2 == 0) {
      x = x / 2;
    } else {
      x = 3 * x + 1;
    }
  }
  t = document.createTextNode(x + ' 終了 ');
  u.appendChild(t);
}

これが無限ループにならずに1に落ち着くことはまだ証明されていませんが,実験的には確からしいようです。


奥村晴彦

Last modified: 2012-04-18 10:16:04