Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

1.23+4.56

0 views
Skip to first unread message

ITAHASHI Kunio

unread,
Nov 19, 2003, 10:53:40 PM11/19/03
to
みなさん こんにちは

測定結果の加減法を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続けています。


ku...@gssm.otsuka.tsukuba.ac.jp

unread,
Nov 19, 2003, 11:05:57 PM11/19/03
to
久野です。

kunit...@h2.dion.ne.jpさん:
> alert(a+b)//5.79
> というようにするにはどう書けばよいのでしょうか。

alert((a+b).toFixed(2));

でしょ。

> よろしくお願いいたします。いろいろ調べてみましたがどの
> 参考書にも載っていませんでした。

私の本は買ってもらえてないことが分かりました ^_^;;; 久野

ITAHASHI Kunio

unread,
Nov 20, 2003, 1:35:07 AM11/20/03
to
久野さん こんにちは。
レスポンスありがとうございました。

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

を実現できますか?

>> よろしくお願いいたします。いろいろ調べてみましたがどの
>> 参考書にも載っていませんでした。
>
> 私の本は買ってもらえてないことが分かりました ^_^;;; 久野

久野さんのご本はとても高度だと思います。
素人の私には、薄いわりに高くて、内容もコンピュータの専門知識
がなければ、理解しにくいなあ(というか無駄になるなあ)、と思って
買わずにいます。そのうちに書店の棚からなくなってしまいました。
(一冊売れたと思います、たぶん)

--
板橋

koun...@mbh.nifty.com

unread,
Nov 20, 2003, 6:36:55 AM11/20/03
to
"ITAHASHI Kunio" <kunit...@h2.dion.ne.jp> wrote in message
news:Vj_ub.147$747...@news1.dion.ne.jp...
> と拒否されてしまいました。toFixed(n)のことですね。
>
> いま思えば、動作環境を書くべきでした。すいませんでした。
> 私のブラウザは
>
> Codename = Mozilla
> Appname = Microsoft Internet Explorer
> Appversion = 4.0 (compatible; MSIE 4.01; Windows 98)
> この環境で
>
> 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
******************************

Satoshi Nakajima

unread,
Nov 20, 2003, 7:11:16 AM11/20/03
to
こんにちは。
ナカジマと申します。


"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

ITAHASHI Kunio

unread,
Nov 20, 2003, 6:32:58 PM11/20/03
to
鴻池さん こんにちは

いつもすいません。
レスポンスありがとうございました。


>
>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以外の書き方なのかもしれませんが、
興味あります。ちょっとご教示いただければさいわいです。

--
板橋

ITAHASHI Kunio

unread,
Nov 20, 2003, 6:34:36 PM11/20/03
to
中島さん こんにちは
ありがとうございました。
納得です。

--
板橋

ku...@gssm.otsuka.tsukuba.ac.jp

unread,
Nov 20, 2003, 7:36:52 PM11/20/03
to
久野です。

kunit...@h2.dion.ne.jpさん:


> ところで、splitメソッドで私が知っているのは、一般的なsplit('mark')
> という形だけなのですが、split(".",2)というのはどういう意味がある
> のでしょうか。いろいろ試してみました。

試したり質問したりする以前にメソッド名まで分かっているのだから
私が学生さんに教える場合だったら絶対に「まずリファレンスを読め」
といいますけどね。

試して推測するクイズなんでしょうか ^_^; 久野

koun...@mbh.nifty.com

unread,
Nov 20, 2003, 9:32:20 PM11/20/03
to
"ITAHASHI Kunio" <kunit...@h2.dion.ne.jp> wrote in message
news:zbcvb.219$747...@news1.dion.ne.jp...

> >strarray=((Math.round((a+b)*100)/100).toString()).split(".",2);
> >alert(strarray[0]+"."+strarray[1].substr(0,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);

とでもしてみたら、想像はつくと思います。(これまた、冗長か。)
詳しくは、久野さんのおしゃるようにリファレンスを。

ITAHASHI Kunio

unread,
Nov 21, 2003, 12:38:44 AM11/21/03
to

koun...@mbh.nifty.com さんwrote...

>> ところで、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のバージョンの問題でした。
私のでは意味の差がありません。

またよろしくお願いします。

--
板橋

0 new messages