将int格式化为带小数的字符串

时间:2016-08-17 12:57:23

标签: c#

我正在尝试使用string.Format方法格式化字符串,以便从int数据类型生成固定的十进制字符串。

我尝试过以下代码:

sOutputString = string.Format(
  "Days:{0:D1} Hours:{1:D1} Minutes:{2:D1} Seconds:{3:D1} Miliseconds:{4:D1}",
   objTimeCalculate.Days,
   objTimeCalculate.Hours,
   objTimeCalculate.Minutes,
   objTimeCalculate.Seconds,
   objTimeCalculate.Miliseconds);

属性DaysHoursMinutesSeconds的值为int数据类型,并使用指定的D格式进行格式化。但是我需要在字符串中生成decimal个值。

输出应为:

sOutputString = Days : double_value Hours : double_value Minutes : double_value Seconds : double_value Miliseconds : integer_value

由于属性天数超出了整数数据类型的范围。

2 个答案:

答案 0 :(得分:2)

鉴于objTimeCalculateTimeSpan,所有这些变量都是int。因此,它们没有小数值。

但是我们可以使用格式字符串F1,它将以固定的十进制值返回,但是这将始终为0

示例:

var objTimeCalculate =(DateTime.Now - DateTime.UtcNow);

var sOutputString = string.Format(
    "Days:{0:F1} Hours:{1:F1} Minutes:{2:F1} Seconds:{3:F1} Miliseconds:{4:F1}",
    objTimeCalculate.Days,
    objTimeCalculate.Hours,
    objTimeCalculate.Minutes,
    objTimeCalculate.Seconds,
    objTimeCalculate.Milliseconds);

结果:

Days:0.0 Hours:9.0 Minutes:29.0 Seconds:59.0 Miliseconds:996.0

您可以参考Standard Numeric Format Strings了解更多详情。

  

" F"或" f"定点

     

结果:带有可选负号的积分和十进制数字。   支持者:所有数字类型。精度说明符:数量   十进制数字。默认精度说明符:定义方   NumberFormatInfo.NumberDecimalDigits。

     

The Fixed-Point ("F") Format Specifier.

答案 1 :(得分:0)

你正在寻找F说明者:

sOutputString = string.Format(
  "Days:{0:F2} Hours:{1:F2} Minutes:{2:F2} Seconds:{3:F2} Miliseconds:{4:F2}",
   objTimeCalculate.Days,
   objTimeCalculate.Hours,
   objTimeCalculate.Minutes,
   objTimeCalculate.Seconds,
   objTimeCalculate.Miliseconds);