測定結果の加減法をJavaScriptでしたいのですが、
こまったことが起きました。
<script>
//case1
var a=1
var b=4
alert(a+b)//5
//case2
a=1.2
b=4.5
alert(a+b)//5.7
//case3
a=1.23
b=4.56
alert(a+b)//5.7899999999...
</script>
質問したいのは、case3のとき・・・
alert(a+b)//5.79
というようにするにはどう書けばよいのでしょうか。
よろしくお願いいたします。いろいろ調べてみましたがどの
参考書にも載っていませんでした。いつも初歩的な質問で
すいません。
--
板橋
細々とJavaScript続けています。
kunit...@h2.dion.ne.jpさん:
> alert(a+b)//5.79
> というようにするにはどう書けばよいのでしょうか。
alert((a+b).toFixed(2));
でしょ。
> よろしくお願いいたします。いろいろ調べてみましたがどの
> 参考書にも載っていませんでした。
私の本は買ってもらえてないことが分かりました ^_^;;; 久野
ku...@gssm.otsuka.tsukuba.ac.jp さん wrote ...
>kunit...@h2.dion.ne.jpさん:
>> alert(a+b)//5.79
>> というようにするにはどう書けばよいのでしょうか。
>
> alert((a+b).toFixed(2));
>
>でしょ。
>
私のブラウザに
「オブジェクトでサポートされていないプロパティまたはメソッドです」
と拒否されてしまいました。toFixed(n)のことですね。
いま思えば、動作環境を書くべきでした。すいませんでした。
私のブラウザは
Codename = Mozilla
Appname = Microsoft Internet Explorer
Appversion = 4.0 (compatible; MSIE 4.01; Windows 98)
Java = true
OS = Win32
Broswer = Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)
ScreenHeight = 768
ScreenWidth = 1024
Bpp = 16
です。
この環境で
alert(a+b)//5.79
を実現できますか?
>> よろしくお願いいたします。いろいろ調べてみましたがどの
>> 参考書にも載っていませんでした。
>
> 私の本は買ってもらえてないことが分かりました ^_^;;; 久野
久野さんのご本はとても高度だと思います。
素人の私には、薄いわりに高くて、内容もコンピュータの専門知識
がなければ、理解しにくいなあ(というか無駄になるなあ)、と思って
買わずにいます。そのうちに書店の棚からなくなってしまいました。
(一冊売れたと思います、たぶん)
--
板橋
無理でしょう。toFixedはJavaScript 1.5からだと思いますが、IEでは、5.5以上でな
いとサポートしていません。アップグレードするのが一番手っ取り早いのではと思い
ます。
そのブラウザで似たようなことをするのなら、例えば
a=1.23;
b=4.56;
strarray=((Math.round((a+b)*100)/100).toString()).split(".",2);
alert(strarray[0]+"."+strarray[1].substr(0,2));
とかでもできるかも知れません。(そのバージョンのブラウザは無いので、できるか
どうか確認はしていませんし、まともなやり方とも思えませんが。)
--
******************************
keizi kounoike
******************************
"ITAHASHI Kunio"
<kunit...@h2.dion.ne.jp> wrote in
message
news:Vj_ub.147$747...@news1.dion.ne.jp...
(略)
> この環境で
>
var a=1.23
var b=4.56
> alert(a+b)//5.79
>
> を実現できますか?
alert(Math.round((a+b)*100)/100);
ではいかがでしょうか。
僕の持っている本では、Math.round(n) のメ
ソッドは、
NN2.0以上、IE3.0以上でサポートしているよ
うに書いてあります。
(僕の環境ではニュース記事がすぐに消えて
しまうので、
適切なフォロウアップができないことがあ
りますが、
ご容赦ください。)
==
Satoshi Nakajima 中島 敏
mailto:naka...@chem.gunma-ct.ac.jp
いつもすいません。
レスポンスありがとうございました。
>
>a=1.23;
>b=4.56;
>strarray=((Math.round((a+b)*100)/100).toString()).split(".",2);
>alert(strarray[0]+"."+strarray[1].substr(0,2));
>
トリッキーですが、面白いですね。
ところで、splitメソッドで私が知っているのは、一般的なsplit('mark')
という形だけなのですが、split(".",2)というのはどういう意味がある
のでしょうか。いろいろ試してみました。たとえば、モデルを簡略化
して動作させてみると、結果は
var a = '1.23456789';
s=a.split('.',2);
alert(s[0]+'.'+s[1].substr(0,2)); //1.23
s=a.split('.',-1);
alert(s[0]+'.'+s[1].substr(0,2)); //1.23
s=a.split('.',100);
alert(s[0]+'.'+s[1].substr(0,5)); //1.23456
でした。これはsplit('.');でも同じです。
s=a.split('.');
alert(s[0]+'.'+s[1].substr(0,2)); //1.23
s=a.split('.');
alert(s[0]+'.'+s[1].substr(0,2)); //1.23
s=a.split('.');
alert(s[0]+'.'+s[1].substr(0,5)); //1.23456
私の知らないJavaScript以外の書き方なのかもしれませんが、
興味あります。ちょっとご教示いただければさいわいです。
--
板橋
--
板橋
> ところで、splitメソッドで私が知っているのは、一般的なsplit('mark')
> という形だけなのですが、split(".",2)というのはどういう意味がある
> のでしょうか。いろいろ試してみました。
試したり質問したりする以前にメソッド名まで分かっているのだから
私が学生さんに教える場合だったら絶対に「まずリファレンスを読め」
といいますけどね。
試して推測するクイズなんでしょうか ^_^; 久野
トリッキーでもなんでもないですね。ただ、冗長なだけでした。
Math.round((a+b)*100)/100)で十分なものを、何を思ったのか変なコードを付け加え
ただけでした。ナカジマさんの記事を見て、俺はバカかと思いました。
> ところで、splitメソッドで私が知っているのは、一般的なsplit('mark')
> という形だけなのですが、split(".",2)というのはどういう意味がある
> のでしょうか。いろいろ試してみました。
大した意味はないです。数字の場合は、split(".")で十分です。
ただ文字の場合、例えば、
a="1.23.567.89";
s=a.toString().split(".");
alert(s.length);
s=a.toString().split(".",1);
alert(s.length);
s=a.toString().split(".",2);
alert(s.length);
s=a.toString().split(".",3);
alert(s.length);
s=a.toString().split(".",4);
alert(s.length);
s=a.toString().split(".",5);
alert(s.length);
とでもしてみたら、想像はつくと思います。(これまた、冗長か。)
詳しくは、久野さんのおしゃるようにリファレンスを。
>
ありがとうございます。
JavaScriptのバージョンの問題でした。
私のでは意味の差がありません。
またよろしくお願いします。
--
板橋