少数点第2位で四捨五入をするにはどうすればよいですか?



0   名前: neko : 2007/02/04(日) 13:43  ID:h/3.YvNp sub-t1
【n = Math.round】
→少数点第1位で表示したいのですがどうしたらよいですか?

【NaN】
テキストとフィールドに入力する欄が8行あるのですが
計算させると入力してないところがNaNと出ます。
これを数値0と表示するにはどうしたらよいですか?

【現在の状況】
入力表は出来たけど入力していないところがあると合計が出来ないで困っています。
表は6列8行です。
<script language="JavaScript"><!--
function calc()
{
w = eval(document.myFORM.wd.value);
h = eval(document.myFORM.ht.value);
s = eval(document.myFORM.mi.value);
m = (((w-4)/1000 )* ((h-4)/1000))*s ;
n=w-4
n=h-4
document.myFORM.result.value = m;
document.myFORM.cat.value = n;
document.myFORM.cat2.value =n;
これの繰り返しです。
この歳になってチャレンジしている初心者ですが宜しくお願い致します。

1   名前: NullPo : 2007/02/04(日) 13:43  ID:Z0FHbpib sub-ii
> →少数点第1位で表示したいのですがどうしたらよいですか?
Math.round(1.15 * 10) / 10
とかとか

> これを数値0と表示するにはどうしたらよいですか?
たぶん空白値のせいなので、"" - 0 とか new Number("").valueOf() とかして、数値に変えると良い予感。

> w = eval(document.myFORM.wd.value);
> h = eval(document.myFORM.ht.value);
> s = eval(document.myFORM.mi.value);
> m = (((w-4)/1000 )* ((h-4)/1000))*s ;
evalは数値に変える関数じゃないので・・・、数値に変換するか、足し算しないならむしろeval使わなければうまくいくかも。

2   名前: neko : 2007/02/04(日) 13:43  ID:h/3.YvNp sub-t1
NullPo様
ありがとう御座います。助かりました。
お陰さまで計算後の値の場所は
●evalは数値に変える関数じゃないので・・ eval取り覗いたらうまく行きました。
感謝!感謝!です。
再び御質問申し上げます。
●入力しない場合は "" - 0 とか new Number("").valueOf() これを
この欄で↓反応させるための入れ方?スクリプトの順番?を教えていただけないでしょうか?
s = (document.myFORM.mi.value);
 この数値はテーブル欄で受取ります<input size="8" type="text" name="mi">

●一番お聞きしたいのが少数点の表示ですがもう一度お願いできますでしょうか?
m = (((w-4)/1000 )* ((h-4)/1000))*s ;
(((900-4)/1000)*((1060-4)/1000))*3=2.838528となります。
これを2.9と表示をしたい場合どんな方法があるでしょうか?

初心者の質問でアホみたいで申し訳御座いませんが助けると思って教えてください。

3   名前: NullPo : 2007/02/04(日) 13:43  ID:Z0FHbpib sub-ii
> ●入力しない場合は "" - 0 とか new Number("").valueOf() これを
> この欄で↓反応させるための入れ方?スクリプトの順番?を教えていただけないでしょうか?
> s = (document.myFORM.mi.value);
s = document.myFORM.mi.value - 0;

> ●一番お聞きしたいのが少数点の表示ですがもう一度お願いできますでしょうか?
> m = (((w-4)/1000 )* ((h-4)/1000))*s ;
> (((900-4)/1000)*((1060-4)/1000))*3=2.838528となります。
> これを2.9と表示をしたい場合どんな方法があるでしょうか?
繰り上げしたかったですか。
m = Math.ceil((w - 4) / 1000 * (h - 4) / 1000 * s * 10) / 10;

4   名前: 匿名 : 2007/02/04(日) 13:43  ID:iK.3Z8B0 sub-kJ
余談だが、もしもスレタイ通り四捨五入する場合には演算誤差に注意。

なお、フォームコントロールの入力値は必ず文字列になっている。数字(文字列)を数値に変換するには、専用のメソッドを使った方が良い。先行する空白、後続する不要文字列もきちんと除去してくれる。

・parseInt(): 整数のみ扱う場合
・parseFloat(): 小数も扱う場合

JavaScript は、(数字 - 数値)、(数字 * 数値)、(数字 / 数値) を数値に変換するという暗黙のルールがある。だから (数字 - 0) と書くと数値に変換されるわけで、急ぎの場合には大変便利だ。

しかし反面、こういう暗黙の型変換は、コードの「意味」を分かりづらくする。コードの意味を明確にするために、私はできるだけ用途に応じたメソッドを使うことを勧めたい(HTML の構造化マークアップの考え方と根は一緒だ)。

5   名前: neko : 2007/02/04(日) 13:43  ID:h/3.YvNp sub-t1
感謝!感謝!感激ーーーー。バンザイ!
ありがとう御座いました。
この喜び解りますか。
出来る人にはなんでもなく馬鹿みたいに思えるかもしれませんが
本当に助かりましたし、うれしいし、勉強する意欲も出てきたし
この歳でピコ、ピコ、画面に向かって孤独だった毎日・・・
どう質問していいのか:。<&なんだか訳がわからず、使い方もそれに意味も????です。先ずはコピペからと思いつつやっていました。パソコンと疲れたら参考書と首っ引きでした。やっと
1ページ完成できたのでこれを糸口に頑張ってみます。
ありがとう御座いました。

パソコンって楽しい!javascriptが使えるともっと楽しい!

6   名前: neko : 2007/02/04(日) 13:43  ID:h/3.YvNp sub-t1
掲示板ってすごい
NullPoさんに、お礼を書いてモタモタしていて送信したら
匿名さんからの注意事項がアップしていた・・びっくり!
ありがとう御座いました。
ルールは助かりました。具体的に日本語で書かれるとすごく
解りやすいです。

>私はできるだけ用途に応じたメソッドを使うことを勧めたい(HTML の構造化マークアップの考え方と根は一緒だ)。
私もこれから調べて勉強しますが、やり方が何通りもありますがそういう風に考えていいのでしょうか?

● メソッド=例があれば教えていただけないでしょうか?
  あのスミマセンが組み方の例でお願いします。

●マークアップの考え方=これもお願いします。

すみません少し図々しいですが皆さん、なんとか付いていける様
御協力お願い致します。

7   名前: neko : 2007/02/04(日) 13:43  ID:h/3.YvNp sub-t1
・マークアップの考え方
人工言語を使ってテキストデータ中に記述していく方式の言語。HTMLのタグ等でありますがテキストの構造を理解してボディから内容まで、タグといわれるマークを使ってあらわすか。

※タグの使い方を構造で覚えなさい!・・・・・これなら解る。

・メソッド
オブジェクト指向プログラミング
オブジェクの中でデータから次のデータへ繋ぐ手続き、内側から外側への順番で繋いで構成しツリー構造をしていくマーク記号。

こんなもんでいいでしょうか?
要がしっかりしていないと崩れます。ということなのでしょうが出てくるのが英数字と記号
何がなんだか順番が理解できなくなり、すると応用が出来ないのです。

・parseInt(): 整数のみ扱う場合
・parseFloat(): 小数も扱う場合
お陰さまでビルトイン関数もよく調べましたが、体験したときは覚えているかもしれませんが
多分右から左から零れ落ちていくと思う。

ありがとう御座いました。

8   名前: 匿名 : 2007/02/04(日) 13:43  ID:iK.3Z8B0 sub-kJ
> やり方が何通りもありますがそういう風に考えていいのでしょうか?

例えば、stringValue が数字のとき、結果だけ見れば以下の w は全部同じだが、意味するところはそれぞれ異なる。

・w = parseInt( stringValue); は、w が整数値であることを意味する。
・w = Number( stringValue); は、w が何らかの数値であることを意味する。
・w = eval( stringValue); は、w が stringValue の評価結果であることを意味する。
・w = value - 0; は、w がその計算結果であることを意味する。

だから>>1 で NullPo 氏が『evalは数値に変える関数じゃない』と言っている。プログラミング言語は「言語」なんだから、自分の考え方を表現する手段と考えよう。そうすると、バグを発見しやすく、相手にも(機械にも)読みやすい、良いプログラムになる。

> 体験したときは覚えているかもしれませんが多分右から左から零れ落ちていくと思う。

そんなもんです。外国語の単語を覚えるのと同様、こればっかりは何度も繰り返し覚えるしかない。そのためにも、早い段階でリファレンスの読み方を覚えるのは、良いことだと思う。

> メソッド

JavaScript に限っては、関数と読み替えても差し支えない(関数オブジェクトを参照するプロパティ)。

9   名前: カヅサツ ◆ThCi95HEzw : 2007/02/04(日) 13:43  [URL]  ID:O5hEMlpW sub-r2
>>6
> ●マークアップの考え方=これもお願いします。

http://members.jcom.home.ne.jp/pctips/www/MarkUp.html が解かり易いと思います。

10   名前: neko : 2007/02/04(日) 13:43  ID:h/3.YvNp sub-t1
皆さんどうもありがとう御座います。

今のうち基礎を知らなくてはいけないのですね。
ややや・・・・・泣けてきそうです。難しくて(横文字・カタカナ等)

今まではタグでくくって・・・・
今からは正しいマークしましょうですね

今日また解らないことが出ましたので教えてください。

・最初に作ったのはbuttonを使って最後に計算させましたが直接表示させるのとどう違うのでしょうか?
    サンプルから作ったので本人はどう違うのか解りませんがこれを直してみたいのですが。
    生意気に解っているうちに応用編です。 

・今2ページめで作っていてセレクトメニューで選択された項目の値を記述するにはどうしたらよいのでしょうか?

宜しくお願い致します。

11   名前: 匿名 : 2007/02/04(日) 13:43  ID:iK.3Z8B0 sub-kJ
まあ、>>5 の「できた!」という喜びは何物にも替えがたいですよね。理屈は後から着いてくる。

ただ、掲示板という特性上、こちらは理屈を用いて教えないといけないわけで、喜びに水を差すような言動になってしまうのは申し訳ない。横文字・カタカナ語は、実はわざと多めに使っている(早く用語に慣れてもらうため)。

また、最初に変な書き方を覚えると、後から矯正することが非常に困難になってしまう(実体験)ので、私は基本を強調している(その意味では、>>0 のサンプルコードを載せている本?は止めた方が良いなあ……)。

なお、基本的に 1 つの質問は 1 つのスレッドで行うと、検索するときに便利。なので、新しい質問は別スレッドを立ててほしい。>>10 だとイマイチ内容が不明なので、もう少し詳しく書いてちょ。

12   名前: neko : 2007/02/04(日) 13:43  ID:XTFrJOQE sub-t1
はい
別にスレッドを使います。
宜しくお願い致します。

一覧へ戻る