繁体   English   中英

如何停止从 TextWriter 中截断尾随 0?

[英]How to stop truncating trailing 0 from TextWriter?

我有这个代码

 private const string STANDARD_6DIGIT_FORMAT = "{0:0.0#####}~";
    private const string STANDARD_5DIGIT_FORMAT = "{0:0.0####}~";
    private const string STANDARD_4DIGIT_FORMAT = "{0:0.0###}~";
    static void Main(string[] args)
    {
        System.IO.TextWriter writeFile = new StreamWriter("d:\\textwriter.txt");

        writeFile.Write(STANDARD_5DIGIT_FORMAT, 0.600000);
        writeFile.Flush();
        writeFile.Close();
        writeFile = null;

    }

当我尝试在 txt 文件中将 0.600000 格式化为 0.60000 时,它会截断尾随零。

有人可以帮我阻止这个吗? 我想在 txt 文件中保留所有这些值

您是否尝试过使用0而不是#将浮点数转换为字符串,然后将其写入文件

//Use '0' instead of '#'
private const string STANDARD_5DIGIT_FORMAT = "{0:0.000000}~";

...

writeFile.Write(0.600000.ToString(STANDARD_5DIGIT_FORMAT));

....

从文档中,

格式说明符:

# :如果有一个,则用相应的数字替换“#”符号; 否则,结果字符串中不会出现数字

0 :如果存在 1,则将 0 替换为相应的数字; 否则,结果字符串中将出现零

在您的情况下,您需要使用0而不是#将零替换为格式化值

.NET 小提琴

我不知道这是否适合您的项目,但我在将十进制值转换为欧元货币时遇到了类似的问题。 你可以让 just.ToString("F6");

writeFile.Write((0.6).ToString("F6"));

逗号和点的问题:

        var cultureFranch = new System.Globalization.CultureInfo("fr-FR", false);
        var nfi = cultureFranch.NumberFormat;
        nfi.NumberGroupSeparator = ",";
        nfi.NumberDecimalSeparator = ".";

        writeFile.Write((0.6).ToString("F6", nfi));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM