回答編集履歴
2
誤字訂正
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
記述ミス訂正
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秒だったとして、整数部分と小数部分を単純に別個に計算してしまうとどうなるでしょう。
|
7
|
+
ご質問のコードでは秒と秒未満のそれぞれを別個に計算していますが、`time_after_usec`が`time_before_usec`より小さい場合を考慮していません。例えば、afterが12.3秒でbeforeが10.5秒だったとして、整数部分と小数部分を単純に別個に計算してしまうとどうなるでしょう。3から5を引いたらマイナスになってしまいますが、それと同様なことが起きています。
|
8
8
|
マイナスの値を`%06lu`と整数値として表示しようとすると、大きな値が表示されることになります。
|
9
9
|
|
10
10
|
小学校で習った筆算を思い出してください。同じ桁位置で引かれる値よりも引く値が多きい場合は、上の桁から一つ借りてくる(借りてきた上の桁は一つ減らす)ということをしますよね。もし秒部分とマイクロ秒部分を別個で計算したいのなら、同じように繰り下がりを処理しなければいけません。
|