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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

956閲覧

[python]数字を「指数+小数第二位まで」という形で出力させたいのですが思うようにコードが書けずに困っています

mini1988

総合スコア56

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/05/31 08:11

小数点の数字を、「指数+小数第二位まで」という形で出力させたいのですが、思うようにコードが書けません。どなたかご教示いただけないでしょうか?超基本的なことで申し訳ないのですが、よろしくお願いします。

小数点の数値

x=0.00987654321

実現したい表示

variable: 9.87e-03

私が書いているコード

x=0.00987654321 print("variable:"+str(x)) variable:0.00987654321

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

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

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

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

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

guest

回答2

0

ベストアンサー

書式化するためには「とりあえずformatメソッド」と覚えておくとよいと思います。strクラスのメソッドです。

python

1x = 0.00987654321 2print('variable: {:.2e}'.format(x)) #=> variable: 9.88e-03

以下のページを常に見る習慣をつけておけば「確かstrになんかあった気がする」程度の記憶でも具体的にどうすればよいか調べられると思います。ここを見る習慣を早くつければつけるほどプログラミングする際に悩まなくて済みますね。

https://docs.python.jp/3/index.html

ここから「ライブラリーリファレンス」「4.7 テキストシーケンス型」「format」と辿っていくとformatメソッドにたどり着けます。

最初からここしか見ないのは厳しいですが「python 数値 文字列 変換」といった感じで調べながらリファレンスも併用することで自然に覚えていけるものです。

たどり着くにはそれなりに(strになんかメソッドがあった気がするといった程度でも)知識が必要ですが、リファレンスを見る習慣さえつけておけば誰でも自然に覚えるであろうことは間違いないです。


なお、質問者さんがPython3.6以降をお使いならLouiS0616さん回答が使えますが、例えばUbuntu 16.04LTS (Windows Subsystem for Linuxとか)上でPython 3.5しか入ってないなんてことも有り得ます。そんな場合はformatを使うと同様のことができます。

(この話はだんだん必要なくなっていく知識という意味で季節ネタなのですが、リファレンスさえ見ておけば季節ネタでもなんでも詳しい情報が得られるので安心と思います)

https://docs.python.jp/3/reference/lexical_analysis.html#f-strings


回答者のみなさんがformatを使っているかf'...{}...'を使っているかは「質問者さんがPythonのバージョンをきちんと書いているかどうか」にも依存しますが、回答者さんが「新しい機能を啓もうしようとしているか」「多少古いバージョンでも動きやすいコードを意識して書いているか」など色々な要因で変動しますのでそうした点もQ&Aをみてて面白いと感じます。

投稿2018/05/31 09:01

編集2018/05/31 09:50
KSwordOfHaste

総合スコア18392

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

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

mini1988

2018/05/31 11:01

解決できました。いろいろと教えていただき、本当にありがとうございました。教えていただいたURLで調べるクセを付けようと思います。
KSwordOfHaste

2018/05/31 11:05

LouiS0616さんの書式化文字列はPython3.6以降ならとても便利なのでこれもぜひ覚えておくのがよいと思います。実のところ自分は普段LouiS0616さん回答の方を好んで使いますw; 新しい機能をリファレンスやここteratailで見つけたらどんどんつかっちゃいます。
mini1988

2018/06/02 06:41

はい、いろいろとアドバイスをいただき、ありがとうございました。
guest

0

こんな感じですかね。

Python

1>>> x = 0.00987654321 2>>> print(f'variable: {x:.2e}') 3variable: 9.88e-03

フォーマット済み文字列リテラルを利用しています。

Python

1f'{表示したい変数名:表示形式}'

今回の場合、次のように読めます。

  • .2... 小数点以下二桁になるように四捨五入せよ (註)
  • e... 指数表記せよ

註:
数学的な四捨五入とはちょっと挙動が異なります。
ただ、もともとが誤差を含み得ることを考えると、あまり気にしなくても良いでしょう。

投稿2018/05/31 08:17

編集2018/05/31 08:54
LouiS0616

総合スコア35658

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

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

mini1988

2018/05/31 11:01

おかげさまで解決することができました。本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問