1

我要将字符串值转换为双精度值...实际上我想使用TimeSpan 值将秒转换为分钟,我想转换的值为780.0000000656558780 秒,其余为毫秒...我想显示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采用 adouble并包括小数部分(在此处添加 0.1 以使小数清晰):

使用 PowerShell(它会自动进行stringtodouble转换)

PS [64]> [时间跨度]::FromSeconds("780.1000000656558")


天数:0
小时 : 0
分钟 : 13
秒:0
毫秒:100
滴答声:7801000000
总天数:0.00902893518518519
总小时数:0.216694444444444
总分钟数:13.0016666666667
总秒数:780.1
总毫秒数:780100

但是,正如评论者指出的那样,分辨率有一个限制TimeSpan:滴答声或 100ns 间隔。你的小数部分小于那个。因此,在有关 Ticks 的示例中,包含七个小数位,但您的第一个非零小数位在位置8

这可以通过使用TimeSpan.FromTicks手动将字符串转换为 a来看到long,同时(分钟、秒和毫秒),但第一个非零十进制数字仍然丢失:

PS [64]> [时间跨度]::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 回答