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

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

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

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

3回答

6299閲覧

指定の値の倍数になるように数値を切り上げる方法

swifty

総合スコア38

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/07/07 06:07

指定の値の倍数になるように数値を切り上げる方法を知りたいです。

指定の値を10としたら以下(左の数値が使う値、右側がその結果得られる値)のようにいつでも10の倍数を返すことのできる方法を知りたいです。

0→10
1→10
2→10
3→10
4→10
5→10
6→10
7→10
8→10
9→10
10→10

11→20
12→20
13→20
14→20
15→20
16→20
17→20
18→20
19→20
20→20

54→60
88→90
93→100
328→330
.
.
.

excelであればCEILINGという関数があるようで、基準値(今回であれば10)を決めたら、数値をその基準値の倍数まで切り上げて返してくれるようです。まさにこういった関数を必要としています。

swiftにもないものだろうかと調べていたのですがceilしかなく自分が実現したいことができずに困っております。

ceilを使えば

ceil(0.8)→1.0

を得ることができるので
例えば8を入れたら10を得たい時

let startNumber = 8 let x = Double(startNumber) * 0.1 let y = ceil(x) let targetNumberDouble = y * 10 let targetNumber = Int(targetNumberDouble) print(targetNumber) // 結果 10

といったことをすればこの8の場合は無理やり計算で出すことができるのですが、数値の変化に対応できません。

何かよい方法がございましたらご教授いただけますと幸いです。
何卒よろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

そこまでわかっているのであれば、関数にしてしまうだけで済むのではないでしょうか?

Swift

1func f(num: Int, base: Int) -> Int{ 2 let x = Double(num) / Double(base) 3 let y = ceil(x) * Double(base) 4 return Int(y) 5}

投稿2019/07/07 07:38

Rino-T_C

総合スコア95

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

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

swifty

2019/07/07 07:57

ご回答ありがとうございました!確かにその通りですね。2つ目の引数を持たせた関数を作れば問題なくできますね!なぜかその発想が思いつきませんでした。 ご回答ありがとうございます!助かりました!!
guest

0

swift

1let number = 10 //指定の値 2for value in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 19, 20, 54, 88, 93, 328] { 3 print(value, (value + (number - 1)) / number * number) 4}

0は0だけど。

0 0 1 10 2 10 3 10 4 10 5 10 6 10 7 10 8 10 9 10 10 10 11 20 19 20 20 20 54 60 88 90 93 100 328 330

投稿2019/07/08 01:00

fuzzball

総合スコア16731

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

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

swifty

2019/07/11 03:17

ご回答ありがとうございます!今playgroundで試してみました。とてもミニマルで素晴らしいです。こういった書き方もありますね。
guest

0

値が倍数で割り切れるか。割り切れるならその値を返す
割り切れない場合、(値/指定の倍数+1)*指定の倍数(全部整数演算)を返す

投稿2019/07/07 13:45

y_waiwai

総合スコア87749

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問