teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

誤字訂正

2019/06/26 01:51

投稿

catsforepaw
catsforepaw

スコア5944

answer CHANGED
@@ -5,7 +5,7 @@
5
5
  では何故ご質問のコードでは6桁を超えるかというと、**時間間隔の計算が間違っている**からです。
6
6
 
7
7
  ご質問のコードでは秒と秒未満のそれぞれを別個に計算していますが、`time_after_usec`が`time_before_usec`より小さい場合を考慮していません。例えば、afterが12.3秒でbeforeが10.5秒だったとして、整数部分と小数部分を単純に別個に計算してしまうとどうなるでしょう。3から5を引いたらマイナスになってしまいますが、それと同様なことが起きています。
8
- マイナスの値を`%06lu`と数値として表示しようとすると、大きな値が表示されることになります。
8
+ マイナスの値を`%06lu`と数値として表示しようとすると、大きな値が表示されることになります。
9
9
 
10
10
  小学校で習った筆算を思い出してください。同じ桁位置で引かれる値よりも引く値が多きい場合は、上の桁から一つ借りてくる(借りてきた上の桁は一つ減らす)ということをしますよね。もし秒部分とマイクロ秒部分を別個で計算したいのなら、同じように繰り下がりを処理しなければいけません。
11
11
 

1

記述ミス訂正

2019/06/26 01:51

投稿

catsforepaw
catsforepaw

スコア5944

answer CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  では何故ご質問のコードでは6桁を超えるかというと、**時間間隔の計算が間違っている**からです。
6
6
 
7
- ご質問のコードでは秒と秒未満のそれぞれを別個に計算していますが、`time_after_usec`が`time_before_usec`より小さい場合を考慮していません。例えば、afterが12.3秒でbeforeが10.5秒だったとして、整数部分と小数部分を単純に別個に計算してしまうとどうなるでしょう。5から8を引いたらマイナスになってしまいますが、それと同様なことが起きています。
7
+ ご質問のコードでは秒と秒未満のそれぞれを別個に計算していますが、`time_after_usec`が`time_before_usec`より小さい場合を考慮していません。例えば、afterが12.3秒でbeforeが10.5秒だったとして、整数部分と小数部分を単純に別個に計算してしまうとどうなるでしょう。3から5を引いたらマイナスになってしまいますが、それと同様なことが起きています。
8
8
  マイナスの値を`%06lu`と整数値として表示しようとすると、大きな値が表示されることになります。
9
9
 
10
10
  小学校で習った筆算を思い出してください。同じ桁位置で引かれる値よりも引く値が多きい場合は、上の桁から一つ借りてくる(借りてきた上の桁は一つ減らす)ということをしますよね。もし秒部分とマイクロ秒部分を別個で計算したいのなら、同じように繰り下がりを処理しなければいけません。