首页 新闻 搜索 专区 学院

C#怎么把例如3天5小时换算成3.2天?急求!!!!!!!

0
悬赏园豆:20 [已解决问题] 解决于 2014-06-12 17:04

数据库里面一个字段存了几天,一个存了几个小时,现在想把例如3天5小时换算成3.2天这样的格式,求解答

days=3

hours=5

换算后 3.2天

问题补充:

我也知道是5/24 但是C语法里这个搞不对,求解,按照C#语法怎么算

edsonwu的主页 edsonwu | 初学一级 | 园豆:146
提问于:2012-04-27 15:42
< >
分享
最佳答案
0

    double d= 5.0 / 24;
           double  m = Math.Round(d, 1);

然後 5+m

收获园豆:10
無限遐想 | 老鸟四级 |园豆:3740 | 2012-04-27 15:55

5怎么换算成5.0,那个5+m的5代表什么呢?

edsonwu | 园豆:146 (初学一级) | 2012-04-27 16:01

@edsonwu: 5是整數到double 的轉換

   int l1 = 5;
            double m = double.Parse(l1.ToString());

無限遐想 | 园豆:3740 (老鸟四级) | 2012-04-27 16:03

@無限遐想: m就是 最好的天數,比如0.2

最後 再 加起來 ,就是你需要的哦

無限遐想 | 园豆:3740 (老鸟四级) | 2012-04-27 16:04
其他回答(7)
0

5/24吧

把小时转换成天,除以24小时。

悟行 | 园豆:12422 (专家六级) | 2012-04-27 15:44

关键是用语法怎么实现

支持(0) 反对(0) edsonwu | 园豆:146 (初学一级) | 2012-04-27 15:55
1
private double GetDecDateTime(DateTime datetime)
{
    TimeSpan oneday = new TimeSpan(1, 0, 0, 0);
    return datetime.TimeOfDay.Ticks / oneday.Ticks;
}

这里我使用了TICKS这个单位,是最精确的了,你可以根据具体情况进行修改,比如使用毫秒、秒、分、时等(TimeSpan有对应的属性)。

private double GetDecDateTime(TimeSpan duration)
{
    TimeSpan oneday = new TimeSpan(1, 0, 0, 0);
    return duration.Ticks / oneday.Ticks;
}

这个方案里的duration是需要你进行转换的(数据库里存储的天、小时等数据),当然,你也可以直接把数据库里的数据以参数的形式传递给函数,只要做简单的修改就好(TimeSpan有几个重载的构造函数)。

当然,最简单的办法,莫过于直接使用TimeSpan对象的TotalDays属性。

无之无 | 园豆:5085 (大侠五级) | 2012-04-27 16:00

用TimeSpan.TotalDays也是很好的做法,如果组成比较多又有年又有月,有分有秒,用timespan会简单很多。

支持(0) 反对(0) 水牛刀刀 | 园豆:6350 (大侠五级) | 2012-04-27 16:14

两个数相除,结果可以是:

商和余数,或者是 一个小数形式表示的数据。

.NET里,两个数相除后,最后的数是以两个数中精度最大的为准进行输出。

也就是说,1/2应该是0.5,但因为两个书都是整数,输出的时候会对0.5进行转换((int)0.5),这个的结果是0。

.Net里,要求两个整数相除的商就用“/”,要求余数则用“%”,如果要求更精确的数则用小数:

int days=3;

int hous=5;

double result = days + hours * 1.0 / 24;//或者days + hours / 24.0
支持(0) 反对(0) 无之无 | 园豆:5085 (大侠五级) | 2012-04-27 16:21

很强,

支持(0) 反对(0) edsonwu | 园豆:146 (初学一级) | 2012-04-27 16:29
0
int days = 3;
int hours = 5;

//你的错误做法:
//decimal result = days + hours / 24;

//正确做法
decimal result  = days + hours / 24m;

在C#中一个int除以另外一个int,得到的还是一个int,因此5/24的结果是0. 而5/24m是一个int除以另外一个decimal,得到的是decimal类型。

收获园豆:10
水牛刀刀 | 园豆:6350 (大侠五级) | 2012-04-27 16:06

很强,

支持(0) 反对(0) edsonwu | 园豆:146 (初学一级) | 2012-04-27 16:30
0

int days=3;

int hours=5;

int offset=days*24+hours;

int res=offset/24+offset%24;

中文代码 | 园豆:951 (小虾三级) | 2012-04-28 08:35
0

实现的方法很多,看你如何去定制自己的换算格式,同意楼上各位意见。。。

KivenRo | 园豆:1722 (小虾三级) | 2012-04-28 14:23
0

double newdate=double.parse(5)/24+3;

MrCui | 园豆:162 (初学一级) | 2012-06-05 15:27
0

double result = (day * 24m + hour) / 24m

gunsmoke | 园豆:3592 (老鸟四级) | 2012-06-13 08:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册