C# 当数字是整数而不是十进制或双精度时,为什么WriteLine跳过制表符

C# 当数字是整数而不是十进制或双精度时,为什么WriteLine跳过制表符,c#,C#,这似乎是一种奇怪的行为 我下面有一段代码,它从数据库中提取值,然后将它们写入一个文件 x、 Amount是double类型的属性 StringWriter sw = new StringWriter(); foreach (var x in result) { sw.WriteLine("name:" + "\t" + 4 + "\t" + x.Amount + "\t" + x.age); } 问题是当金额为整数或整数时,无法打印选项卡 所以我明白了

这似乎是一种奇怪的行为

我下面有一段代码,它从数据库中提取值,然后将它们写入一个文件

x、 Amount是double类型的属性

StringWriter sw = new StringWriter();
foreach (var x in result)
{
                  sw.WriteLine("name:" + "\t" + 4 + "\t" + x.Amount + "\t" + x.age);

}

问题是当金额为整数或整数时,无法打印选项卡

所以我明白了

name:   4    350.5    26
name:   4    350.25   29
name:   4    2000.25  29
name:   4    350 29
如上所示,当金额为整数时,文件中似乎缺少该选项卡

我正在使用下面的代码将其写入一个文件

using (StreamWriter writer = new StreamWriter(Response.OutputStream, Encoding.Default))
            {
                writer.Write(sw.ToString());
            }

该选项卡没有丢失。将选项卡视为具有列的表。每个列的开始位置都是一个制表符停止位置。无论第1列中有多少个字母,下一列2始终从左边缘开始。因此,第1列和第2列中的值之间的间距将减小。看起来间距是错误的,但实际上它改变了列,只是看起来它是错误的

a | b | c


aaaa | bbbb | c

该选项卡没有丢失。将选项卡视为具有列的表。每个列的开始位置都是一个制表符停止位置。无论第1列中有多少个字母,下一列2始终从左边缘开始。因此,第1列和第2列中的值之间的间距将减小。看起来间距是错误的,但实际上它改变了列,只是看起来它是错误的

a | b | c


aaaa | bbbb | c

您的标签没有丢失;您的编辑器只需选择该制表位

要将文本对齐到列中,请指定列的宽度。在这里,我将把你的数量填充到8个字符。根据需要更改此号码

我提出两种解决方案。我推荐第一种

解决方案1:使用 用于将金额填充到8个字符:

StringWriter sw = new StringWriter();
foreach (var x in result)
{
    sw.WriteLine(String.Format("name:\t{0}\t{1,-8}\t{2}", 4, x.Amount, x.age));
}
解决方案2:串联 虽然我建议使用复合格式,但您可以在不使用以下内容的情况下执行此操作:

StringWriter sw = new StringWriter();
foreach (var x in result)
{
    sw.WriteLine("name:" + "\t" + 4 + "\t" + x.Amount.ToString().PadRight(8) + "\t" + x.age);
}

您的账单没有丢失;您的编辑器只需选择该制表位

要将文本对齐到列中,请指定列的宽度。在这里,我将把你的数量填充到8个字符。根据需要更改此号码

我提出两种解决方案。我推荐第一种

解决方案1:使用 用于将金额填充到8个字符:

StringWriter sw = new StringWriter();
foreach (var x in result)
{
    sw.WriteLine(String.Format("name:\t{0}\t{1,-8}\t{2}", 4, x.Amount, x.age));
}
解决方案2:串联 虽然我建议使用复合格式,但您可以在不使用以下内容的情况下执行此操作:

StringWriter sw = new StringWriter();
foreach (var x in result)
{
    sw.WriteLine("name:" + "\t" + 4 + "\t" + x.Amount.ToString().PadRight(8) + "\t" + x.age);
}

它没有丢失。去下一个收费站。你的金额应该用一些填充来写。好的。我该如何解决这个问题?我希望他们都能像数字中有小数点时一样整齐地排列。我能把整数转换成35到35.0吗?它没有丢失。去下一个收费站。你的金额应该用一些填充来写。好的。我该如何解决这个问题?我希望他们都能像数字中有小数点时一样整齐地排列。我能把整数转换成35到35.0吗?