Java 如何停止从TextWriter截断尾部0?

Java 如何停止从TextWriter截断尾部0?,java,c#,asp.net,asp.net-mvc,Java,C#,Asp.net,Asp.net Mvc,我有这个密码 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 Ma

我有这个密码

 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
:如果有相应的数字,则用相应的数字替换零;否则,零将出现在结果字符串中

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


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

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

...

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

....
根据文件

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

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

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


我不知道这是否适合您的项目,但我在将十进制值转换为欧元时遇到了类似的问题。 您可以使.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));

我不知道这是否适合你的项目,但我有类似的问题转换十进制值欧元货币。 您可以使.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));

这与Java有什么关系?他们必须知道一些逻辑才能做到这一点。这不是关于TextWriter,而是关于停止从truncingok中拖尾0,这在你的C#示例中并不明显……这与Java有什么关系?他们可能知道一些逻辑来做到这一点。这不是关于TextWriter,而是关于停止从truncingok中拖尾0,这在您的C#示例中并不明显……当我编写writeFile.Write(0.600000.ToString(标准#5位#格式)时,它给出了{0:0.6}~;是否可以使用我们使用0而不是#即使值可能也不是零?是的,
Console.WriteLine(0.610000.ToString(“0.000000”)
将打印
0.610000
当我写writeFile时,它会给出{0:0.6}~;是否可以使用我们使用0而不是#即使值可能也不是零?是的,
Console.WriteLine(0.610000.ToString(“0.000000”)将打印
0.610000