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

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

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

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

Q&A

解決済

1回答

998閲覧

python format()で桁数指定を数字でする場合、文字列化するほかに方法はありますか?(小数点以下の型「f」での桁数指定ではないです)

nomaluu

総合スコア34

Python 3.x

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

0グッド

0クリップ

投稿2021/08/02 12:57

編集2021/08/02 12:59

質問

print("{:.2}".format("abcde")) #'ab'

のように文字数の数を指定しているように、数字でも同様に数を指定できる方法を教えてください。
例えば、上のコードに習って、
line = '{0}さんの身長は{1:.1f}cmです。{0}さんの体重は{2:.2}kgす。'.format('山田',190,105.3)
print(line)
みたいなコードで[105.3]を文字数のように「10」にしたのですが、下のように数字を文字列化する以外の方法はございますか?

line = '{0}さんの身長は{1:.1f}cmです。{0}さんの体重は{2:.1}kgです。'.format('山田',190,'105.3')
print(line) #山田さんの身長は190.0cmです。山田さんの体重は1kgです。


line = '{0}さんの身長は{1:.1f}cmです。{0}さんの体重は{2:.1}kgです。'.format('山田',190,str(105.3))
print(line) #山田さんの身長は190.0cmです。山田さんの体重は1kgです。

環境

python 3.9.5
windows10
vscode

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

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

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

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

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

takasima20

2021/08/02 13:08

希望するように割ればいいと思うけど、文字化を手間と感じるとなると…
udon-ken

2021/08/02 13:15

あ・・・ 105.3を10で割って小数点以下を切り捨てて10と表示したいって事ですか? そういう事であればformatでは無理なのでは? f-stringsならできますが。
nomaluu

2021/08/02 13:20

f文字列について、調べている際によくわからずformat()や書式化演算子%など出てきて、format()を調べていたところでしたが、f-stringでできるようなので、ベストアンサーにはできませんがありがとうございます。
udon-ken

2021/08/02 13:27

f-strignsだと line = f"{'山田'}さんの身長は{190:.1f}cmです。{'山田'}さんの体重は{105.3 // 10:.0f}kgです。" こういう感じかな(もちろん、名前やら数値は変数にすべきだけど)。 formatでもできるかもしれない(formatは演算子使えないと聞いた気がしたので。使わないから事実かどうか自信がないです)。
guest

回答1

0

ベストアンサー

[105.3]を文字数のように「10」にしたのですが、

int(105.3 / 10) すればよろしい、ってはなしなのかな?

投稿2021/08/02 13:25

y_waiwai

総合スコア88042

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

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

nomaluu

2021/08/02 13:40

回答ありがとうございます。「int(105.3 / 10) すればよろしい、ってはなしなのかな?」はい、おっしゃる通りです。 line = '{0}さんの身長は{1:.1f}cmです。{0}さんの体重は{2:.1}kgです。'.format('山田',190,int(105.3/10)) print(line) の場合ValueErrorが出るのですが、format内での引数のエラー箇所がわかりません。
y_waiwai

2021/08/02 14:00

int すると整数になるんで、 line = '{0}さんの身長は{1:.1f}cmです。{0}さんの体重は{2}kgです。'.format('山田',190,int(105.3/10)) でしょう。 10.0と表示させたいなら、 line = '{0}さんの身長は{1:.1f}cmです。{0}さんの体重は{2:.1f}kgです。'.format('山田',190,105.3//10) でしょうか
nomaluu

2021/08/02 14:09

ありがとうございます。実行できました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問