C#浮点数格式化问题:如何实现保留两位小数且占8位宽度?
问题解决:浮点数格式化为指定宽度和小数位数
你当前的格式字符串语法有误,导致输出不符合预期。问题出在0.00, 8的写法上:逗号在这里被当作千位分隔符使用,而非指定宽度的语法,所以无法实现你要的8位宽度效果。
正确的格式化写法
C#字符串插值中,指定宽度和格式的语法是{变量名, 宽度:格式字符串},其中:
, 8表示右对齐且总占用8位宽度(如果是负数则左对齐)0.00表示保留两位小数,整数部分和小数部分不足时补0(也可以用F2替代,效果一致)
修改后的代码如下:
public override string ToString() { return $"{x,8:0.00}{y,8:0.00}{z,8:0.00}"; }
效果验证
当x = -12.3456时,格式化后会输出 -12.34,正好占用8位宽度,完全符合你的需求。
补充说明
- 如果需要左对齐,只需将宽度改为负数,比如
{x,-8:0.00},输出会变成-12.34 0.00和F2的区别:0.00强制显示整数部分和小数部分的位数(比如0会显示为0.00),F2同样保留两位小数,对于整数部分为0的情况表现一致,这里任选其一即可。
内容的提问来源于stack exchange,提问作者user366312
相关产品推荐
相关产品推荐

