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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

4回答

526閲覧

割り算して、あまりがある場合は、答えに+1した値を出す方法

thesnowman

総合スコア154

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

1グッド

2クリップ

投稿2020/04/11 14:08

編集2020/04/11 14:09

すごくわかりにくいタイトルで恐縮です。

num1が割られる値
num2が割る値だとすると
自分はこのようにしました。

ruby

1(num1/num2.to_f).ceil

そうすると以下のようにタイトルのように
割り算して、あまりがある場合は、答えに+1した値が返されます。

ruby

1num1 = 10 2num2 = 4 3 4(num1/num2.to_f).ceil 5#=>3

同じ機能で、これよりももっと良いコードはありますかね?
良いの基準は人それぞれで結構です
ちなみにnum1とnum2は整数です

ruby

1(num1/num2.to_f).ceil
DrqYuto👍を押しています

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

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

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

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

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

gouf

2020/05/03 13:04

解決した場合、他者の回答ないし自己回答として内容をまとめて それをベストアンサーに設定することで、この質問を解決済みにすることができます
thesnowman

2020/05/06 03:10

すみませんでございます
guest

回答4

0

ruby

1ans = (num1.to_f / num2).ceil if num2 != 0

num2 が 0 だった場合のことを考慮しています。
to_f はなるべく先頭に近いほうにあった方が、int でなく float で計算しているということがわかります。

投稿2020/04/12 07:27

katoy

総合スコア22324

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

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

0

言葉通り「余りがある場合に 答えに +1」というのであれば、 divmod で計算結果と余りを算出すれば、その後の「あまりがあるか否か」が判定できそうです

ruby

1a = 10 2b = 4.to_f 3 4pp a.divmod(b) 5 .tap { |x| p x } # => [2, 2.0] 6 .yield_self { |x, y| y.zero? ? x : x.succ } # 三項演算子で、値を返すか 加算するか処理 7# => 3

なにか参考になれば幸いです

Links

投稿2020/04/12 05:35

gouf

総合スコア2321

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

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

0

num1/(num2+num1-1)

でどでしょ

あ、逆だったw

(num1+num2-1)/num2

こっちね

投稿2020/04/11 14:13

編集2020/04/11 14:15
y_waiwai

総合スコア87774

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

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

thesnowman

2020/04/11 14:19

(num1+num2-1)/num2 これって全然ならなくないですか? たとえば、num1=10, num2 = 4なら (13)/4になりますよね? 3にならないですよ!
thesnowman

2020/04/11 14:21

あーそっか、rubyだとなりますね 普通に割り算で考えてました
thesnowman

2020/04/11 14:23

関係ない質問で恐縮なんですが 「割り算して、あまりがある場合は、答えに+1した値を出す方法」 ってもっとそれっぽい表現ありますかね?
y_waiwai

2020/04/11 14:25

切り上げする、っていいかたですかね
y_waiwai

2020/04/11 14:26

ふつーの整数どおしの割り算は切り下げになりますね
thesnowman

2020/04/11 14:26

ありがとうございます!
thesnowman

2020/04/11 14:51

また、質問させてください。 (num1+num2-1)/num2だと具体的なメリットってあるんでしょうか? 例えば計算速度が速いなど あるいは、単ににそういう書き方が一般的だからって事ですか?
y_waiwai

2020/04/11 14:53

計算速度が早いです 整数演算は浮動小数点の演算に比べて早いです。メモリも食わないですし
thesnowman

2020/04/11 15:03

なるほど、、、 ありがとうございます!
guest

0

ベストアンサー

(num1+num2-1)/num2

投稿2020/04/11 14:13

asm

総合スコア15147

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

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

thesnowman

2020/04/11 14:19

(num1+num2-1)/num2 これって全然ならなくないですか? たとえば、num1=10, num2 = 4なら (13)/4になりますよね? 3にならないですよ!
thesnowman

2020/04/11 14:22

rubyってこと忘れてました!
asm

2020/04/11 15:05

ん?両方とも正の整数ならばなりますよ。 負の数が交じると何を答えと定義するかなどの問題が混じってくるので難しいですが
thesnowman

2020/04/11 15:10

ですね、普通にrubyじゃなくて算数として考えてしまいました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問