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

C# 将int格式化为带小数的字符串,c#,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

我正在尝试使用
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);
属性
小时
分钟
的值为
int
数据类型,并使用指定的
D
格式格式化。但是,我需要字符串中生成的
decimal

输出应为:

sOutputString=Days:double\u值小时:double\u值分钟:double\u值秒:double\u值毫秒:整数值


因为属性天数可能超出整数数据类型的范围。

您正在寻找说明符:

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);

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

假设
objTimeCalculate
TimeSpan
所有这些变量都是
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


假设
objTimeCalculate
TimeSpan
所有这些变量都是
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


请包括您的预期输出。正如@Nico所述。请举例说明输入的数据类型以及您最终期望的sOutputString的外观。请使用F或G格式。您能解释一下如何使用F或G吗@PawełDylSee这里有不同的格式:请包括您的预期输出。正如@Nico所说的。请举例说明输入的数据类型以及您最终期望的sOutputString的外观。请使用F或G格式。您能解释一下如何使用F或G吗@Pawełdylse这里有不同的格式:
D
说明符仅用于
int
类型,没有指数值。如果必须显示十进制值,则应坚持使用
F
。尝试在
int
以外的任何对象上使用
D
都会导致格式异常。如果使用F,我可以获得准确的输出,但对于非常大的数字,输出效果并不理想。如果查看标准格式字符串,您将看到还有许多其他选项。如果要为大数添加逗号分隔符,请使用
N
格式提供程序。
D
说明符仅用于
int
类型,没有指数值。如果必须显示十进制值,则应坚持使用
F
。尝试在
int
以外的任何对象上使用
D
都会导致格式异常。如果使用F,我可以获得准确的输出,但对于非常大的数字,输出效果并不理想。如果查看标准格式字符串,您将看到还有许多其他选项。如果要为大数字添加逗号分隔符,请使用
N
格式提供程序。