シンプルな修正ユリウス日を求めるプログラムです。試しに2004年1月1日を求めると、誤った値「6640249」が出力されます。試行錯誤の結果、functionの中身、uに数値を代入する文(原文では改行されていません)で、dをMath.floor(d)に変えると正しい値「53005」が出力されました。この理由が全くわかりません。また、6640249はどのように計算された値でしょうか?ブラウザはIE6とLunascape2を使用です。
<html>
<head>
<title>myJulianday</title>
<script type="text/JavaScript">
<!--
function myFuncJulianday(){
y=document.form1.input1.value;
m=document.form1.input2.value;
d=document.form1.input3.value;
if(m==1){
m=13;
y=y-1;
}
if(m==2){
m=14;
y=y-1;
}
u=Math.floor(365.25*y)+Math.floor(y/400)-Math.floor(y/100)+Math.floor(30.59*(m-2))+d-678912;
document.form1.input4.value=u;
}
//-->
</script>
</head>
<body>
<form type="text" name="form1">
<input type="text" name="input1" size="10">年
<input type="text" name="input2" size="10">月
<input type="text" name="input3" size="10">日
<input type="button" size="20" value="ユリウス日を表示" onClick="myFuncJulianday()">
<input type="text" name="input4" size="10">
</form>
</body>
</html>
No.1
- 回答日時:
フォームに入力された値は「文字列」なので、どこかで数値に変換してやらないといけません。
ここでは d の値が文字列であるため、
u = ~ + d - 678912;
の部分で ~ と d が文字列連結されてしまい、その結果から 678912 を引くのでおかしな値になるのです。
( - は数値演算のみの記号なので、問題は起こりません。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScriptでCGIの呼出し・...
-
フォーカス設定について教えて...
-
テキストボックスに初期値で1...
-
現在時刻を表示させたい!
-
テキストエリアへセットフォーカス
-
cookieの判断
-
サブウィンドウに変数を渡す方...
-
HTMLファイル同士での値渡し
-
IE上のカーソル位置に文字列を...
-
テキストボックスの背景色について
-
正規表現で複数マッチ条件で悩...
-
ボタン2回押しを無効にしたい
-
<form action="#">の意味とは?
-
<td>の中のonClick="location" で
-
JavaScriptにて動的に配列を作...
-
背景色を変えて未入力チェック...
-
【jsp/Java】チェックボックス...
-
javascriptで画像の移動
-
selectを変更不可にしたい
-
selectを使った計算
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TextBoxに半角数字以外を入れた...
-
HTMLとJavaScriptで作った表示...
-
tabindexの取得
-
VBscriptの配列変数をJavascrip...
-
プルダウンで選択された値を別...
-
フォームの内容でリンク先URLの...
-
テキストボックスに入力した色...
-
GetElementByIdがうまく取得で...
-
JavaScriptで作ったアプリが正...
-
jQueryのdatepickerの日付が選...
-
HTMLファイル同士での値渡し
-
マイナスなら赤字で表示したい...
-
VBSからjavascript
-
テキストエリアに履歴を残したい
-
どちらかひとつのテキストボッ...
-
一部Enter無効化の方法を教えて...
-
ページ間で変数を保持したい
-
Request.Form(key)の中身をクリ...
-
javascriptのちょっとした動作...
-
JSで一つのボタンを押したとき...
おすすめ情報