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

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

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

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

Q&A

解決済

3回答

578閲覧

「.0」を明示した数値→文字列変換

cookie618

総合スコア2

Python

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

0グッド

0クリップ

投稿2021/05/25 07:04

float型変数から書式の決まった文字列を作成したい。
条件は下記の通り。
・文字列はマイナス、小数点含め10桁以内、丸め方は自由
・指数表示はしない
・float型変数は-999~999の範囲で入力される
・必ず小数点を明示し、整数の場合は「.0」を追加する。
(具体例)
-1.23 → "-1.23"
-1.23456789 → "-1.2345678"
1.234567891 → "1.23456789"
0 → "0.0"
999 → "999.0"
-999 → "-999.0"

取り組んだこと
'{:.7g}'.format(X)
とすると10桁以内には収まりますが、".0"がつかずに困っています。

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

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

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

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

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

guest

回答3

0

簡単にはできなかったので、正規表現の後読みアサーションを使ってみました。

python

1>>> import re 2>>> def to_str(X): 3... return re.sub('(?<=[^.])0+$', '', '{:1.8f}'.format(X)[:10]) 4... 5>>> to_str(-1.23) 6'-1.23' 7>>> to_str(-1.23456789) 8'-1.2345678' 9>>> to_str(1.234567891) 10'1.23456789' 11>>> to_str(0) 12'0.0' 13>>> to_str(999) 14'999.0' 15>>> to_str(-999) 16'-999.0'

投稿2021/05/25 07:55

ppaul

総合スコア24666

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

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

cookie618

2021/12/18 03:40

ありがとうございます。
guest

0

すこし面倒ですが、float.is_integer()を使って「整数のfloat」か「そうでないfloat」かどうかを判定し、整数のfloatの場合は、小数点以下一桁を出力する書式で、そうでなければ質問者さんのような書式で文字列を作成して出力したらいかがでしょうか。

投稿2021/05/25 07:36

編集2021/05/25 07:38
ikapy

総合スコア1167

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

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

0

ベストアンサー

・整数値は、例えばfloat(9)とすると9.0が返ってくるので、str(float(9))とすれば"9.0"を取得できます
・-999~999の範囲、かつ、まるめ方が自由なので任意の文字列xに対してx[:10]とすれば10桁以内に収めることができます。

これらをまとめると、全ての実数値xに対して

str(float(x))

とすればいいのではないでしょうか。

投稿2021/05/25 07:45

goto_yuta_

総合スコア211

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

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

taC-h

2021/05/25 08:13

str(float(0.00001)) == '1e-05' になります
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問