我要将字符串值转换为double ...
其实我想用TimeSpan
将秒转换为Mintues
我要转换的值是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) + "...";
}
}
}
我想在分钟内显示输出......我该怎么办? 在此先感谢
答案 0 :(得分:2)
TimeSpan.FromSeconds
需要double
并包含小数部分(此处加0.1以使分数清晰):
使用PowerShell(自动执行string
到double
转换)
PS [64]> [TimeSpan]::FromSeconds("780.1000000656558") Days : 0 Hours : 0 Minutes : 13 Seconds : 0 Milliseconds : 100 Ticks : 7801000000 TotalDays : 0.00902893518518519 TotalHours : 0.216694444444444 TotalMinutes : 13.0016666666667 TotalSeconds : 780.1 TotalMilliseconds : 780100
然而,正如评论者指出的那样,TimeSpan
的分辨率有限:刻度或100ns间隔。您的小数部分小于该部分。因此,在关于Ticks的示例中包括七位小数,但您的第一个非零小数位位于 8 。
这可以通过使用TimeSpan.FromTicks
,手动将字符串转换为long
,同时(分钟,秒和毫秒)来看到,但第一个非零十进制数字仍然是丢失:
PS [64]> [TimeSpan]::FromTicks(7801000000) Days : 0 Hours : 0 Minutes : 13 Seconds : 0 Milliseconds : 100 Ticks : 7801000000 TotalDays : 0.00902893518518519 TotalHours : 0.216694444444444 TotalMinutes : 13.0016666666667 TotalSeconds : 780.1 TotalMilliseconds : 780100
答案 1 :(得分: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();