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

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

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

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

Q&A

解決済

1回答

1979閲覧

func recordLimits()内の%d:0%dの意味

kei1990s

総合スコア25

Swift

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

0グッド

0クリップ

投稿2016/12/06 03:02

var timeCount = 1

func recordLimits(){
let minuteCount = timeCount / 60
let secondCount = timeCount % 60
if secondCount <= 9 {
byou.text = String(format: "%d:0%d", minuteCount, secondCount)
}else if secondCount >= 10 {
byou.text = String(format: "%d:%d", minuteCount, secondCount)
}

ここの"%d:0%d"の表現が理解できません
この書き方はどういう意味なのでしょうか?

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

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

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

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

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

fuzzball

2016/12/06 04:44

コードは ``` で囲って下さい。
guest

回答1

0

ベストアンサー

%dはフォーマット指定子と呼ばれ、%dの部分に整数を10進で出力する場合に使います。このプログラムでは"%d:0%d"の後ろにminuteCountsecondCountを渡しているため、1つ目の%dにはminuteCountが、2つ目の%dにはsecondCountが代入されます。

このプログラムは、秒(secondCount)が9以下の時、すなわち1桁の時は前に0をくっつけて2桁に補正するようにしているみたいですね。

12分34秒の場合
String(format: "%d:%d", 12, 34) → 12:34

12分5秒の場合
String(format: "%d:0%d", 12, 5) → 12:05

でも"%02d"ってやればわざわざif文でわけなくてもゼロ補正できたような。。。

投稿2016/12/06 03:36

編集2016/12/06 03:53
hitsujimeeee

総合スコア486

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

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

kei1990s

2016/12/06 04:14

わかりやすい! ありがとうございます 理解できました!
kei1990s

2016/12/06 04:27

一つきになるのですが let minuteCount = timeCount / 60 let secondCount = timeCount % 60 ここは何で/と%で分かれるのでしょうか? どっちも/ではいけないのでしょうか?
fuzzball

2016/12/06 04:48 編集

/は除算、%は剰余です。それぞれの計算式が何を求めているのかを考えれば、どっちも/ではいけないことが分かると思います。
kei1990s

2016/12/06 05:12 編集

例えば5分30秒だった場合 minutecount=330/60 5.5 A / B ――AをBで除算(割り算)します。 A % B ――AをBで割った余りを計算します。 これはわかるんですが どこに対する理解が欠如しているでしょうか? 1%60=0.0016.....
fuzzball

2016/12/06 05:10 編集

どちらもInt型なので演算は整数で行われます。「330 / 60 = 5 余り 30」です。
kei1990s

2016/12/06 05:14

330/60 = 5余り30 330%60 = 0.181818になるのですが そこはどう表現するのかなあと すいません数学が苦手で
fuzzball

2016/12/06 05:20

余りの計算は小学3年生で習います。 「330/60 = 5余り30」ではなく、「330/60=5(除算)、330%60=30(剰余)」です。
kei1990s

2016/12/06 05:37

あなるほど そういうことか ありがとうございます
fuzzball

2016/12/06 05:50 編集

たぶん難しく考えすぎです。 「330を60で割った余りは?」に何と答えるか、ということです。 0.1818...とは答えないでしょう?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問