質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1178閲覧

Pythonでネイピア数をeと判別させたい

c_python

総合スコア3

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/12/08 15:01

Pythonにて、計算結果が2.718.....といわゆるネイピア数となったとき、計算結果の表示を実数による近似値ではなく文字列eとして表示されることはできないでしょうか?また、π(パイ)についても同じことをしたいです。
どなたか回答よろしくお願いします。

因みにjupyter notebookでpython3を扱っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

私は使ったことがないのですが,
https://home.hirosaki-u.ac.jp/jupyter/sympy/#基本的な定数で記載されているように,
pythonの数式処理システムであるsympyパッケージを利用するといいのではないでしょうか?

投稿2021/12/08 15:22

ujimushi_sradjp

総合スコア2103

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/12/08 16:05

自分もsympyを本格的に業務などで使ったことはないのですが、興味本位で結果がπとeになる簡単な式で試してみました。 import sympy pi = 4 * sympy.atan(1) e = sympy.simplify(sympy.sinh(1) + sympy.cosh(1)) print(pi) # => pi print(e) # => E ちゃんと piや Eという結果になってます。 ちなみにsimplifyをしないと、print(e) は sinh(1) + cosh(1) と表示されました。 比較対象として、sympyでなくmath だと自分の手元の環境では以下でした。 import math pi = 4 * math.atan(1) e = math.sinh(1) + math.cosh(1) print(pi) # => 3.141592653589793 print(e) # => 2.718281828459045
c_python

2021/12/08 16:48

確かに↑のコードをコピペさせていただくとeと表示されました。ですが、e^2などの時はこの通りに表示させることは不可能なのでしょうか?僕ももう少し調べてみますが、知っていたら教えていただきたいです。
退会済みユーザー

退会済みユーザー

2021/12/08 17:45

(数学として) sinh(2)+cosh(2) = e^2 ですが、これを試すべく、 e = sympy.simplify(sympy.sinh(2) + sympy.cosh(2)) にしてprint(e) すると、 exp(2) と表示されました。2 だけではなく整数nならexp(n)と表示されるようです。
c_python

2021/12/09 03:29

そうなのですね、ありがとうございます。
guest

0

以下のようなクラスを定義すれば、通常の数ではそのまま表示されますが、2.718281828459045と3.141592653589793だけは特別な表示を行うようになります。

python

1>>> class Float(float): 2... def __repr__(self): 3... if self == 2.718281828459045: return 'e' 4... elif self == 3.141592653589793: return 'π' 5... else: return super().__repr__() 6... 7>>> x = Float(2.718281828459045) 8>>> print(x) 9e 10>>> print(x-1) 111.718281828459045 12>>> x = Float(3.141592653589793) 13>>> print(x) 14π 15>>> print(x-1) 162.141592653589793 17>>> 18>>> import math 19>>> x = Float(math.pi) 20>>> print(x) 21π 22>>> print(x-1) 232.141592653589793

ソースコードは以下です。

python

1class Float(float): 2 def __repr__(self): 3 if self == 2.718281828459045: return 'e' 4 elif self == 3.141592653589793: return 'π' 5 else: return super().__repr__() 6 7x = Float(2.718281828459045) 8print(x) 9print(x-1) 10x = Float(3.141592653589793) 11print(x) 12print(x-1) 13import math 14x = Float(math.pi) 15print(x) 16print(x-1)

投稿2021/12/08 15:31

編集2021/12/08 22:58
ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

c_python

2021/12/08 15:58

すみません、python初心者すぎてどこに↑のコードを書けばいいのかわかりません。セル毎に毎回書くものなんでしょうか?
ppaul

2021/12/08 22:58

ソースの方を追加しました。
c_python

2022/01/24 13:29

返信が遅くなり申し訳ありません。しばらくログインができない状態が続いておりました。 自分の環境で試しても、まだ数字で表示されました。 わざわざ示していただいたのにすみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問