我正在尝试使用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
由于属性天数超出了整数数据类型的范围。
答案 0 :(得分:2)
鉴于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
您可以参考Standard Numeric Format Strings了解更多详情。
" F"或" f"定点
结果:带有可选负号的积分和十进制数字。 支持者:所有数字类型。精度说明符:数量 十进制数字。默认精度说明符:定义方 NumberFormatInfo.NumberDecimalDigits。
答案 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);