C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: TimeSpan.FromMilliseconds で下4桁


(過去ログ 132 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■77801 / inTopicNo.1)  TimeSpan.FromMilliseconds で下4桁
  
□投稿者/ KH (10回)-(2015/11/23(Mon) 20:12:45)

分類:[.NET 全般] 

int start = Environment.TickCount;
label.Text = TimeSpan.FromMilliseconds(Environment.TickCount - start).ToString();

このように1000分の1秒までの表示をしたいのですがなぜか
34.1230000
のように0が下四桁多く表示されてしまいます。
どうしたらよいのでしょうか。
ご指導のほどよろしくお願い申し上げます。
引用返信 編集キー/
■77806 / inTopicNo.2)  Re[1]:
□投稿者/ Azulean (548回)-(2015/11/23(Mon) 20:48:25)
2015/11/23(Mon) 20:50:00 編集(投稿者)

その振る舞いについてはここに書いてあります。
https://msdn.microsoft.com/ja-jp/library/1ecy8h51

そして、日本語がわかりづらいですが、書式を制御したい場合は ToString の引数ありのオーバーロードを使えと書いてありますので、たどっていけば情報にたどり着けるのではないかと。
----
これだけではたどりづらいかもしれないので、こちらも貼っておきます。
https://msdn.microsoft.com/ja-jp/library/ee372287
引用返信 編集キー/
■77828 / inTopicNo.3)  Re[2]: :
□投稿者/ KH (15回)-(2015/11/24(Tue) 15:23:18)
ご返信ありがとうございます。
(fff)とすると整数部が表示されないので困っていますが
もう少し調べてみます。
解決済み
引用返信 編集キー/
■77836 / inTopicNo.4)  Re[3]: :
□投稿者/ みい (29回)-(2015/11/24(Tue) 17:09:43)
No77828 (KH さん) に返信
> ご返信ありがとうございます。
> (fff)とすると整数部が表示されないので困っていますが
> もう少し調べてみます。
Azuleanさんが貼られてるリンクの2番目
https://msdn.microsoft.com/ja-jp/library/ee372287
に整数部も表示する例が載ってますよ
解決済み
引用返信 編集キー/
■77838 / inTopicNo.5)  Re[1]: TimeSpan.FromMilliseconds で下4桁
□投稿者/ Jitta (163回)-(2015/11/24(Tue) 20:40:15)
No77801 (KH さん) に返信
> int start = Environment.TickCount;
> label.Text = TimeSpan.FromMilliseconds(Environment.TickCount - start).ToString();

 TickCount はミリ秒ではありません。FromTicks メソッドを使ってください。
Ticks は64ビットです。int で受けるとエラーになりませんか?(ワーニングどまり?)
正しい値を設定すると、TimeSpan.Milliseconds で、ミリ秒の“部分だけ”を取り出せます。

 まず、どの様に表示したいのか、明らかにしてください。
たとえば、「123.04秒(2分3秒04)経過したときに、どの様に表示したいか」。

TimeSpan span = new TimeSpan.FromMilliseconds(123040);
span.ToString(); → 00:2:3.04000000
span.ToString("ss.fff"); → 3.040
string.Format("{0}.{1:d03}", span.TotalSeconds, span.Milliseconds); → 123.040

 それと、このクラスとか。
https://msdn.microsoft.com/ja-jp/library/system.diagnostics.stopwatch.aspx

引用返信 編集キー/
■77843 / inTopicNo.6)  Re[2]: TimeSpan.FromMilliseconds で下4桁
□投稿者/ Hongliang (374回)-(2015/11/24(Tue) 21:46:12)
>  TickCount はミリ秒ではありません。FromTicks メソッドを使ってください。
いえ、Environment.TickCountはintでミリ秒ですよ。
WindowsAPIのGetTickCountそのものですし。
引用返信 編集キー/
■77845 / inTopicNo.7)  Re[3]: TimeSpan.FromMilliseconds で下4桁
□投稿者/ なちゃ (87回)-(2015/11/25(Wed) 02:26:31)
No77843 (Hongliang さん) に返信
>> TickCount はミリ秒ではありません。FromTicks メソッドを使ってください。
> いえ、Environment.TickCountはintでミリ秒ですよ。
> WindowsAPIのGetTickCountそのものですし。

気にするならむしろ引き算でのオーバーフローですね。
uncheckedにしとかないとタイミングによっては例外が発生する可能性があります。
引用返信 編集キー/
■77846 / inTopicNo.8)  Re[4]: TimeSpan.FromMilliseconds で下4桁
□投稿者/ なちゃ (88回)-(2015/11/25(Wed) 09:01:50)
No77845 (なちゃ さん) に返信
> ■No77843 (Hongliang さん) に返信
> >> TickCount はミリ秒ではありません。FromTicks メソッドを使ってください。
>>いえ、Environment.TickCountはintでミリ秒ですよ。
>>WindowsAPIのGetTickCountそのものですし。
>
> 気にするならむしろ引き算でのオーバーフローですね。
> uncheckedにしとかないとタイミングによっては例外が発生する可能性があります。

おっとちょっと勘違い、C#はデフォルトuncheckedでしたね。
まあでもソースだけでは確定出来ないので、考慮してるという意味も込めてunchecked明示しておく方がおすすめです。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -