- ベストアンサー
Excelでセル(数式バー)に =2^128 と入れても2の128乗が計算されずに3.40282E+38という変な結果になってしまいます。
Excelでセル(数式バー)に =2^128 と入れても2の128乗が計算されずに 3.40282E+38 という変な結果になってしまいます。 解決策はございませんでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
あなたがどこまでの精度の結果を期待しているのかわからないのですが、 その値自体「変な結果」ではありません。 整数で扱える範囲を超えたので実数値で計算結果が出ていて、仮数部が3.40282で指数部が38なので仮数部に10を38回掛けることを表現しているだけです。 セル書式で「数値」を選ぶと整数表記で表示できますが、有効桁数の桁あふれをしているので、正確な値は仮数部の小数点以下何位かで制限される状態になります。 Excelで書式を数値にすると「340282366920938000000000000000000000000」が表示されます。 C++等の言語で多倍長精度のプログラムを自分で書くか128 bit整数が扱える計算ライブラリを自分で作るとかしないとすべての桁を正しく求めるのは無理だと思います。
その他の回答 (4)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 昨日、試しにやってみましたが、ワークシート上だけでも、かなり面倒ですが、因数分解で、上位桁と下位桁に分ければ、計算はできます。ただし、表示する時は、文字列になります。多倍長整数プログラムを、VBAで作れば、そんな面倒なことをしなくてもよいでしょうけれども。
- imogasi
- ベストアンサー率27% (4737/17069)
>変な結果 (1)指数表示のEを知らない (2)エクセルの数値の制限桁数に思い当たらない (3)エクセルの整数で扱える範囲を超えた場合、実数値(浮動小数点演算)で計算結果を出すを知らない ための質問だと思います。 だからそこを勉強すればよい。 参考 http://pc21.nikkeibp.co.jp/special/gosa/eg4.shtml WEB照会すれば、すぐ出てきます。 >解決策は 質問者が勉強すること。 ーーーーー =2^128と直接関係ない場合だが セルの幅を広げると、解決する場合もある。 たとえば1234567と入れて幅を狭く(ただし5桁以上7桁未満)すると、1E+06となるが、広げると1234567になる ような例。 ---------- 表示形式で指数表示を、あえて指定している例 指定を数や標準にする。 書式ーセル-指数
- keydaimon
- ベストアンサー率28% (80/285)
電卓と一緒で、計算できる桁数を超えてしまった時の表示ですね。指数表示ともいいます。 これは、 3.40282×10^38(3.40282かける10の38乗)という意味です。 詳しく計算したい場合、フリーソフトで無限桁まで計算できるものを使うといいとおもいますよ!
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
2^128=340282366920938463463374607431768211456 なので、エクセルが保持できる整数の範囲を超えているので仕方ありません。 保持できる範囲内で計算するように工夫する必要があります。