我是ASP.NET MVC C#编程的新手
我有一个类,其中包含一个称为double类型的Credits的属性。在我的Web应用程序中,此属性应表示为时间格式(hh:mm)。因此,例如,如果我要给Credits设置2.5的值,我希望它显示2:50、6.15作为6:15,以此类推。我知道TimeSpan可以将double转换为时间格式,但可以将2.5转换为2: 30岁有没有一种方法可以轻松地将double转换为该时间格式,而无需将其数据类型更改为String?是否有某种辅助属性标签或使之简单的东西?
答案 0 :(得分:1)
您似乎希望将整数和小数部分分开,并且希望小数部分为两位数。
因此,这就是将整数部分作为int
的方式。
var whole = (int)Math.Truncate(value);
这会将小数部分设为int
,在这种情况下,仅小数点后两位。
var twoFrac = (int)(((decimal)value % 1) * 100);
因此,如果value
是12.345
,则twoFrac
在34
中将是int
。
现在您可以按照自己喜欢的方式显示这些内容。
实际上,您可以将上述内容放入方法的内部,这样就可以将小数部分最多增加到想要的小数位数,如下所示:
private static int GetFractionalPart(double value, int decimalPlaces)
{
var factor = (int)Math.Pow(10, decimalPlaces);
var fractional = (int)(((decimal)value % 1) * factor);
return fractional;
}
但是,正如许多其他人在评论中指出的那样,这令人困惑,如果您实际上正在处理时间值,您甚至可以说出错误的处理方式。例如,使用您的条件,2.75
的值将转换为2:75
,但这对时间没有任何意义。
因此,您确实应该使用原始帖子中提到的TimeSpan
,它将2.5
转换为2:30
等。