投稿者 るきお  (社会人) 投稿日時 2012/1/15 13:58:34
太一さんの計算の方が正しいですよね。
10ミリ秒単位で考えると、
173238→1732.38秒→28分52.38秒
になります。

Webの方はプログラムが間違っているのではないかと思います。
丸めがらみの間違いかなとは思いますが、どう間違っているかまでは推理するのが難しいですね…。

なお質問とは関係ありませんが、太一さんのプログラムは一般的には推奨されない以下4点があります。
1.必要ないのにObject型を使用している点
2.メソッド名(TimeFormat)を変数のように使っている点
3.Returnで戻り値を返していない点
4.せっかく世用意されている.NET Frameworkの機能(時間間隔の計算はTimeSpanを使う)を使っていない点

このように簡潔に書くことができます。(ちょっと形式は変わってしまいますけれども)
Public Function TimeFormat(value As LongAs String

    '100ナノ秒単位にそろえる。ミリ→マイクロ→ナノ 
    Dim span As New TimeSpan(value * 10 * 1000 * 10)
    Return span.ToString

End Function


時・分・秒を個別に把握したいのであれば、次のように書くこともできます。
Public Function TimeFormat3(value As LongAs String

    '100ナノ秒単位にそろえる。ミリ→マイクロ→ナノ 
    Dim span As New TimeSpan(value * 10 * 1000 * 10)

    Dim hour As String = span.Hours.ToString
    Dim minute As String = span.Minutes.ToString("00")
    Dim second As String = span.Seconds.ToString("00")
    Dim millisecond As String = span.Milliseconds.ToString

    Return hour & ":" & minute & ":" & second & "." & millisecond

End Function


これで計算してみたら、太一さんの結果と同じになりました。
173238→0:28:52.380
172119→0:28:41.190