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

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

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

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

Q&A

5回答

3907閲覧

数字の1桁目を四捨五入したい

退会済みユーザー

退会済みユーザー

総合スコア0

Python

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

0グッド

0クリップ

投稿2018/06/16 15:32

編集2018/06/16 16:11

補足 この書き方を短くしたいです。

target = 12345 amari = target % 10 if amari == 0: print("amari:",amari) elif amari == 1: target = target + 4 print("amari:",amari) elif amari == 2: target = target + 3 print("amari:",amari) elif amari == 3: target = target + 2 print("amari:",amari) elif amari == 4: target = target + 1 print("amari:",amari) elif amari == 5: print("amari:",amari) elif amari == 6: target = target + 4 print("amari:",amari) elif amari == 7: target = target + 3 print("amari:",amari) elif amari == 8: target = target + 2 print("amari:",amari) elif amari == 9: target = target + 1 print("amari:",amari)

お世話になります。
例えば以下のように四捨五入をしたいです。かんたんにいうと5単位です。
数字は5桁から8桁の整数が入ります。

変更前数字 変更後数字
12340 12340
12341 12345
12342 12345
12343 12345
12344 12345
12345 12345
12346 12350
12347 12350
12348 12350
12349 12350
12350 12350

ためしたこと 文字列にする必要があると思い文字に変換はできました。
しかし桁数取得と5単位という実装方法がわかりません。

>>> n = 12340 >>> l = [int(x) for x in list(str(n))] >>> print(l) [1, 2, 3, 4, 0] >>> new_n = int(reduce(lambda x, y: x + y, [str(x) for x in l])) >>> print(new_n) 12340

よろしくお願いいたします

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

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

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

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

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

guest

回答5

0

python

1from math import ceil 2 3for target in range(12340, 12351): 4 print(ceil(target / 5) * 5)

投稿2018/06/16 16:41

YouheiSakurai

総合スコア6142

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

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

退会済みユーザー

退会済みユーザー

2018/06/16 16:42

桁数ランダムなんですー。書いてある通りです
YouheiSakurai

2018/06/16 16:47

何桁でも処理できますよー。書いてあるコードを読んで理解してくださいね。
退会済みユーザー

退会済みユーザー

2018/06/16 16:48

うーん。すごい。英語もできるし、よう様素敵????
退会済みユーザー

退会済みユーザー

2018/06/16 16:49

かっこよすぎだし優しい。。。
YouheiSakurai

2018/06/16 16:51

そういうのは要らないです。あなたの質問内容のレベルが向上してきているのでその点を評価しているだけです。
退会済みユーザー

退会済みユーザー

2018/06/16 17:00

因みにですが、5の切り下げはceilを利用するとどのように記載するものなのですか? 12344は12340 12346は12345 12349は12345 12350は12350 の場合になります。お手数かけます。
退会済みユーザー

退会済みユーザー

2018/06/16 17:02

要らなくても好きなんだからいーじゃん!
退会済みユーザー

退会済みユーザー

2018/06/17 11:31

優しいー
guest

0

処理的にはこれでよかろうて。

if target % 10 == 0: target = target elif target % 10 <= 5: target = int((target / 10)) * 10 + 5 else: target = (int(target / 10) + 1) * 10

投稿2018/06/16 16:26

編集2018/06/16 16:39
tkturbo

総合スコア5572

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

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

退会済みユーザー

退会済みユーザー

2018/06/16 16:33

すんごい????
退会済みユーザー

退会済みユーザー

2018/06/16 16:36

5以下とそれ以外でどのようなロジックなのですか。みてもわかりません
退会済みユーザー

退会済みユーザー

2018/06/16 16:36

テストしてどうかくしました。かっこいい
tkturbo

2018/06/16 16:40

見た以上のことはやってないので、読んで理解してください。。。
guest

0

round(対象の数字 * 2 / 10) * 20

でいけそうじゃない?

※Python は知らないので、通常の四捨五入に当たる関数を round() と表現しています。

javascript

1Math.ceil(num * 2 / 10) * 5

できたよ


python

1num = 12343 2int(math.ceil(float(num) * 2 / 10) * 5)

投稿2018/06/16 16:04

編集2018/06/16 16:50
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2018/06/16 16:15

違いますね。自分で10回ためしてみてください。
退会済みユーザー

退会済みユーザー

2018/06/16 16:21

ああ、ちがいましたね。
退会済みユーザー

退会済みユーザー

2018/06/16 16:34

Javaじゃやだ。シャバシャバしてるし。そもそもpyとんだからー
退会済みユーザー

退会済みユーザー

2018/06/16 16:35

アルゴリズムは一緒でしょ。つーか、Javaじゃないし。
退会済みユーザー

退会済みユーザー

2018/06/16 16:37

もーしつこいなー
退会済みユーザー

退会済みユーザー

2018/06/16 17:01

しつこいけど、優しいからちょと好きー
guest

0

四捨五入じゃなくて、5単位の切り上げですよね。
4を足して、5で整数除算して、5を掛けます。
#コメントを受けての追記
割り算の仕方が分からないということでしょうか?

Python

1for target in range(12340, 12351): 2 print(target, (target+4)/5*5)

投稿2018/06/16 15:57

編集2018/06/17 00:31
otn

総合スコア84505

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

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

退会済みユーザー

退会済みユーザー

2018/06/16 15:59

整数徐算て具体的にコードでどのようにかけばいいんでしょうか?
otn

2018/06/16 16:02

整数同士なら、/ で。 片方が実数なら、/ で割ってからint()でしょうか。
退会済みユーザー

退会済みユーザー

2018/06/16 16:09

意味が理解できないので自分で作ってみました。補足と してupしましたのでご確認いただけますか?何かすごく長くてかっこ悪いです。
otn

2018/06/18 06:59

> 片方が実数なら、/ で割ってからint()でしょうか。 // を忘れていました。 (target+4)//5*5 のように // で除算すればいいです。
guest

0

python 四捨五入
で google 検索すると、情報を得られます。

  • 整数の特定の位で四捨五入

http://giken.workarea.jp/cg/maya/scripts/python-%E6%95%B4%E6%95%B0%E3%81%AE%E7%89%B9%E5%AE%9A%E3%81%AE%E4%BD%8D%E3%81%A7%E5%9B%9B%E6%8D%A8%E4%BA%94%E5%85%A5.html

  • Python 2 と Python 3 では四捨五入の仕様が違う

https://qiita.com/jiz/items/7e94349918c48b73d3af

投稿2018/06/17 08:29

編集2018/06/17 08:32
katoy

総合スコア22324

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問