プロが教える店舗&オフィスのセキュリティ対策術

Javaの参考書で、以下のコードがありました。

『double d2=1.2345e-72』

質問1:このコードの「e」について、常用対数のことでしょうか?

質問2:1.2345e-72は、『1.2345*10の-72乗』でしょうか?

質問3:浮動小数点において、なぜ常用対数は必要なのでしょうか?
その理由は、「浮動小数点の桁数を簡単にできるから。またdoubleの表現できる精度より高いそれ表現できるから」でしょうか?

A 回答 (4件)

質問2から推測するに,


基数を10とした指数(exponent)を,常用対数と勘違いなさっているのでしょう。


> doubleの表現できる精度より高いそれ表現できるから

というのは変ですよね。1.2345e-72 と表記しようが 0.0000000000000000000000000000000000000000000000000000000000000000000000012345 と表記しようが,有効桁数は変わりません。

この点を除けば,浮動小数点の桁数を簡単に記述できるから指数表記が必要だ,というのは正しいです。
    • good
    • 0
この回答へのお礼

丁寧なご回答ありがとうございます!

お礼日時:2012/01/13 15:09

すみません。

#1です。
「常用対数」と「自然対数(の底)」を勘違いしてました。
回答の前半は無視してください。
    • good
    • 0

1. exponentialのeです。

12345e-72のような表記の方法を指数形式と言います。
2. 念のために括弧をつけるなら『1.2345*(10の-72乗)』です。
3. 質問の前提が成り立っていません。「なぜ指数形式を使うのか」という質問であれば、そのほうが人間が読み書きするのに都合がよい(場合がある)からです。それこそ、1.2345e-72を指数形式を使わずに書こうとすると"0."と"12345"の間に0が71個も並ぶことになり、桁数を間違いなく書くのは大変です。
    • good
    • 0
この回答へのお礼

丁寧なご回答ありがとうございます!

お礼日時:2012/01/13 15:09

> 質問1:このコードの「e」について、常用対数のことでしょうか?


> 質問2:1.2345e-72は、『1.2345*10の-72乗』でしょうか?

なんで質問1から質問2が出てくるんですか? 1.2345*eの-72乗ならともかく。

回答は
回答1:違います
回答2:『1.2345*10の-72乗』なら「その通り」。『1.2345*eの-72乗』なら「違います」
回答3: 回答1、2より、質問自体が無意味

で、こういうのは「リテラル」って言います。
Java リテラルで検索すれば、言語仕様が見つかります。
慣れないとわかりずらい記法にはなってますが。
    • good
    • 0
この回答へのお礼

丁寧なご回答ありがとうございます!

お礼日時:2012/01/13 15:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!