string.Format忽略NumberFormatInfo?

时间:2011-06-08 11:43:28

标签: c# .net

我将数据从进程输出到csv。我将中间结果存储在数据类中,该数据类还具有将数据输出到字符串的方法,以便将其写入文件。

Class DataClass {

    // the actual data
    public double Value1 { get; set; } 
    public double Value2 { get; set; } 
    public double Value3 { get; set; } 

    // return headers for this dataclass (called once)
    public static string Headers { get { return "Value1\tValue2\tValue3"; } }

    // no decimals needed (keep filesize smaller, numbers are millions and up)
    static NumberFormatInfo nfi = new NumberFormatInfo() { NumberDecimalDigits = 0 }; 

    // this returns a string with the values for the dataclass (called for each row)
    public string ValuesString {
        get {
            // ** I would expect the numbers to have NO decimals because of nfi **
            return string.Format(nfi, "{0}\t{1}\t{2}",
                Value1,
                Value2,
                Value3,
            );
        }
    }
}

我在这里写信给文件:

// headers
swResultFile.WriteLine("Group\t" + GroupResult.Headers);

// values
foreach (var r in GroupResults) swResultFile.WriteLine(r.Key + "\t" + r.Value.ValuesString);

但是输出文件仍然包含所有小数:

Group  Value1   Value2  Value3
1   176983.222718191    278477.364780645    462811.208871335
2   11262339.27 16383.9680721473    118430.334721429

有谁知道为什么忽略NumberFormatInfo?

当我在调试器中检查它时看起来很好。

谢谢,

格特 - 扬

1 个答案:

答案 0 :(得分:12)

您必须使用N的{​​{1}}格式说明符才能使用Format。试试这个

NumberFormatInfo