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

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

ただいまの
回答率

90.86%

  • Python

    6317questions

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

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

受付中

回答 5

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 353

terak31

score 6

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2018/06/17 13:10

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 5

+2

四捨五入じゃなくて、5単位の切り上げですよね。
4を足して、5で整数除算して、5を掛けます。

コメントを受けての追記

割り算の仕方が分からないということでしょうか?

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/17 00:59

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

    キャンセル

  • 2018/06/17 01:02

    整数同士なら、/ で。
    片方が実数なら、/ で割ってからint()でしょうか。

    キャンセル

  • 2018/06/17 01:09

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

    キャンセル

  • 2018/06/18 15:59

    > 片方が実数なら、/ で割ってからint()でしょうか。

    // を忘れていました。 (target+4)//5*5 のように // で除算すればいいです。

    キャンセル

+2

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

でいけそうじゃない?

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

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

できたよ


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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/17 01:15

    違いますね。自分で10回ためしてみてください。

    キャンセル

  • 2018/06/17 01:21

    ああ、ちがいましたね。

    キャンセル

  • 2018/06/17 01:34

    Javaじゃやだ。シャバシャバしてるし。そもそもpyとんだからー

    キャンセル

  • 2018/06/17 01:35

    アルゴリズムは一緒でしょ。つーか、Javaじゃないし。

    キャンセル

  • 2018/06/17 01:37

    もーしつこいなー

    キャンセル

  • 2018/06/17 02:01

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

    キャンセル

+2

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

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/17 01:33

    すんごい💕

    キャンセル

  • 2018/06/17 01:36

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

    キャンセル

  • 2018/06/17 01:36

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

    キャンセル

  • 2018/06/17 01:40

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

    キャンセル

+2

from math import ceil

for target in range(12340, 12351):
    print(ceil(target / 5) * 5)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/17 01:42

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

    キャンセル

  • 2018/06/17 01:47

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

    キャンセル

  • 2018/06/17 01:48

    うーん。すごい。英語もできるし、よう様素敵💕

    キャンセル

  • 2018/06/17 01:49

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

    キャンセル

  • 2018/06/17 01:51

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

    キャンセル

  • 2018/06/17 02:00

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

    キャンセル

  • 2018/06/17 02:02

    要らなくても好きなんだからいーじゃん!

    キャンセル

  • 2018/06/17 02:08

    ceilとfloorの解説を読んでみてください。https://docs.python.jp/3/library/math.html

    キャンセル

  • 2018/06/17 20:31

    優しいー

    キャンセル

0

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.86%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    Pythonによる画像仕分けプログラム

    簡単な画像仕分けプログラムを作成したいです。 内容は画像を表示させその画像を人間が黙視し 0、1、2キーを押したら任意のフォルダに画像が移動するプログラムを作成したいです。 動物フ

  • 解決済

    シーザー暗号についての問題

    シーザー暗号についての質問です 大文字を3字ずらす小文字を5字ずらすというプログラムを作っています。 ぶち当たった壁が大文字は3字ずらすことは可能なのですが小文字を5字ずらすことが

  • 解決済

    Javaで文字列から数値配列に変換する方法を教えてください。

    String str = "12345";を1文字づつ分解して数値にして int sufi[] = new int [5];に1から5まで順番に格納していく方法が分かりません。 よ

  • 解決済

    Python 文字列表記の二進数をint型の十進数に変換したい

    Pythonで文字列表記の二進数をint型の十進数に変換したいのですが、そういったメソッドは用意されているのでしょうか? もしない場合、どのようにすれば効率的に求められるでしょ

  • 解決済

    self.rect.xなどに値が代入されない

    壁のあたり判定をつけたいのですがflgだけ確認でき、値が代入されません。 解決方法、こうしたほうがいい点ありましたらお願いします import pygame from pyga

  • 解決済

    elifを使って[ではないときの条件を調べる]

    ①12の倍数のときは[〇] ②12の倍数ではなく4の倍数のときは[△] ③12の倍数でも4の倍数でもなく2の倍数のときは[×] ④上記のどれでもないときは[☆] この条件で打ち

  • 解決済

    乱数から奇数・偶数を取り出したい

    整数型の配列変数dataを作成し、初期値は大きさ:10,値:1から100の乱数が入ります. 以下の回答のように、値をすべて表示し、その中の偶数の数と、奇数の数を表示したいです.

  • 解決済

    マルチバイト文字のchar*をvector<char*>に変換したい

     前提・実現したいこと マルチバイト文字が格納されているchar*型の文字列をvector<char*>に変換したいです。 char* String = "abcあいうえお"

同じタグがついた質問を見る

  • Python

    6317questions

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