如何设置TotalHours为double格式,使txtBoxMonatstotal显示93.3?
解决方法:调整字符串格式化即可
其实你的workedPerMonth已经是double类型啦——因为TimeSpan.TotalHours本身返回的就是double,所以问题出在数值转字符串时的格式化逻辑,默认的ToString()不会强制保留一位小数,所以需要指定格式字符串来让它显示成93.3这样的形式。
你只需要修改赋值给文本框的代码,给ToString()传入格式化参数就行,这里给你几种常用的方案:
方案1:固定保留1位小数(推荐,确保格式统一)
不管数值是整数还是带小数,都显示一位小数,比如93会变成93.0,93.3就显示93.3:
txtBoxMonatstotal.Text = workedPerMonth.ToString("F1"); // 同理其他文本框也可以同步修改格式: txtBoxSollzeit.Text = shouldWorkPerMonth.ToString("F1"); txtBoxSaldo.Text = saldo.ToString("F1");
方案2:保留1位小数,自动去掉末尾无意义的0
如果希望整数时显示纯整数(比如93显示93),有小数时显示一位小数(比如93.3显示93.3),可以用这个格式:
txtBoxMonatstotal.Text = workedPerMonth.ToString("#.0");
额外说明
- 如果你需要保留更多小数位,比如两位,就把
F1改成F2、#.0改成#.00即可。 - 从你的代码来看,
workingHours的Value是TimeSpan类型,TotalHours的计算逻辑是正确的,不用调整类型转换~
内容的提问来源于stack exchange,提问作者Mara
相关产品推荐
相关产品推荐

