1

文字列値を double に変換しようとしています...実際には、変換しTimeSpan たい値を使用して秒を分に変換したい780.0000000656558のですが、780 秒があり、残りはミリ秒です...表示したい13.00000000010942633333場合、または場合によっては 13 分正確な認識ではありません

次のコードを使用しようとしています

if (DownTime != null)
{
    DownTime.Text = sensor.DownTime;
    if (DownTime.Text.Length > 0)
    {
         //TimeSpan.FromSeconds(DownTime.Text).ToString()
         double DownTimeSeconds = Convert.ToDecimal(DownTime.Text).ToString();
         double DownTimeMints = DownTimeSeconds / 60;
         sensor.DownTime = Convert.ToString(DownTimeMints);
         DownTime.Text = sensor.DownTime;
         DownTime.ToolTip = DownTime.Text;
         if (DownTime.Text.Length >= 25)
         {
             DownTime.Text = DownTime.Text.Substring(0, 20) + "...";
         }
    }
}

出力を分単位で表示したい...どうすればよいか事前に感謝します

4

2 に答える 2

2

TimeSpan.FromSecondsを取り、double小数部分を含めます (分数を明確にするために、ここに 0.1 を追加します)。

PowerShell の使用 (自動的にstringtodouble変換を行います)

PS [64]> [TimeSpan]::FromSeconds("780.1000000656558")


日 : 0
営業時間 : 0
分 : 13
秒: 0
ミリ秒: 100
ティック : 7801000000
合計日数: 0.00902893518518519
合計時間: 0.216694444444444
合計分: 13.0016666666667
合計秒数: 780.1
合計ミリ秒: 780100

ただし、コメンターが指摘したように、TimeSpanティック、または 100ns 間隔の解像度には制限があります。あなたの小数部はそれよりも小さいです。したがって、目盛りに関する例では、小数点以下 7 桁が含まれていますが、ゼロ以外の最初の小数桁は位置8にあります。

TimeSpan.FromTicksこれは、同じ時間 (分、秒、ミリ秒)の文字列を手動で に変換するを使用して確認できますがlong、ゼロ以外の最初の 10 進数はまだ失われています。

PS [64]> [TimeSpan]::FromTicks(7801000000)


日 : 0
営業時間 : 0
分 : 13
秒: 0
ミリ秒: 100
ティック : 7801000000
合計日数: 0.00902893518518519
合計時間: 0.216694444444444
合計分: 13.0016666666667
合計秒数: 780.1
合計ミリ秒: 780100
于 2012-10-22T10:13:46.360 に答える
1

このコードで 13 分かかります。最後に試してください。:

        double time = 780.0000000656558;
        TimeSpan ts = TimeSpan.FromSeconds(time);
        Console.WriteLine(ts.Minutes);
        //Console.WriteLine(ts.TotalMinutes);  // this will give u mintes.fractionalpart
        Console.ReadLine();
于 2012-10-22T10:33:02.927 に答える