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

本文关键字:小数 字符串 int 格式化 | 更新日期: 2023-09-27 18:02:42

我正在尝试使用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);

属性"Days"、"Hours"、"Minutes"、"Seconds"的值为"int"数据类型,使用指定的"D"格式格式化。但是,我需要在字符串中生成decimal值。

输出应该是:

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

由于属性days可以超出整数数据类型的范围

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

既然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

您可以参考标准数字格式字符串了解更多详细信息。

"F"或";f"定点

结果:带有可选负号的整数和十进制数字。支持类型:所有数值类型。精度说明符:数量小数位数。默认精度说明符:由NumberFormatInfo.NumberDecimalDigits .

定点("F")格式说明符。

您正在查找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);