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

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

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

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

Q&A

解決済

1回答

1264閲覧

.truncatingRemainder(dividingBy: 60)

kei1990s

総合スコア25

Swift

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

0グッド

0クリップ

投稿2016/12/07 00:28

func updatePlayingTime() { if floor(playSong.currentTime) == floor(playSong.duration) { timer.invalidate() onbyou.text = formatTimeString(playSong.duration) return } onbyou.text = formatTimeString(playSong.currentTime) } func formatTimeString(_ d: Double) -> String { let s: Int = Int(d.truncatingRemainder(dividingBy: 60)) let m: Int = Int(((d - Double(s)) / 60).truncatingRemainder(dividingBy: 60)) let str = String(format: "%2d:%02d", m, s) return str }

d.truncatingRemainder(dividingBy: 60)

この値の残りは切り捨て除算を使用して他の値で除算されます。
例えばplaySong.currentTime(ここで言うd)が50秒だった場合

1)まずこの値の残りというのは50の残りという認識でいいのか
2)またその残りを他の値(ここで言う60)で除算するという認識でいいのか
3)50の残りとはどの数を基準にして50の残りを出すのか

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

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

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

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

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

guest

回答1

0

ベストアンサー

d.truncatingRemainder(dividingBy: 60)d % 60と同じ意味です。剰余を求めます。
FloatやDoubleの場合は % ではなく truncatingRemainder(dividingBy:) を使います。

投稿2016/12/07 00:43

fuzzball

総合スコア16731

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

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

kei1990s

2016/12/07 00:54 編集

なるほど では50.0 % 60 = 0133333... let m: Int = Int(((50 - Double(0133...)) / 60).truncatingRemainder(dividingBy: 60)) と考えてしまうのですが どこの理解がおかしいのでしょうか? 例えば 330/60=5(除算)、330%60=30(剰余)ならわかるのですが
fuzzball

2016/12/07 00:56

違います。50を60で割った余りは50です。
fuzzball

2016/12/07 01:05

あと、別の質問にも同じようなことを書きましたが、自分で確かめられることを一々質問しないで下さい。自分で試してみても分からない、納得できなければ質問して下さい。自分で手を動かさないと身に付かないですよ。
kei1990s

2016/12/07 01:06

50➗ 60 の余りが50というのは 計算としてはどのような計算なのかなと、、 電卓使っても0.01333,,,にしかならないのですが、、、 すいません、、
kei1990s

2016/12/07 01:14

すいません やっとわかりました
fuzzball

2016/12/07 01:22

Swiftを使っているんだからSwiftで試しましょうよ、ということです。 print(50.truncatingRemainder(dividingBy: 60)) で 50.0 と出力されます。 これで、「なんで50なんだろう?」と思うならまだしも、「0.01333ですよね?」なんて質問にはならないはずです。
kei1990s

2016/12/07 01:27

適切なアドバイスありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問