gpt4 book ai didi

c# - 使用点分隔符将 double 写入文本文件

转载 作者:行者123 更新时间:2023-11-30 21:26:56 26 4
gpt4 key购买 nike

我需要用点分隔符在文本文件中写几个 double 。我知道,这段代码是解决方案:

StreamWriter f = new StreamWriter(file, Encoding.ASCII, 128, false);
double a = 1.057887;
f.Write(a.ToString("G5", CultureInfo.InvariantCulture));

但是我有太多的数字要写,所以我尝试了this answer的方法:

f.Write("{0:0.#####} {0:0.#####} {0:0.#####} {0:0.#####} {0:0.#####}", a, a, a, a, a));

还尝试了change the culture globally :

System.Threading.Thread.CurrentCulture.NumberFormat.NumberDecimalSeparator = ".";

但第一个 '{0:0.#####}' 导致逗号分隔符 (1,05789),第二个 'Thread' in CS0120: 非静态需要对象引用字段、方法或属性。

另一个问题是:

f.Write("{0:0.#####} {0:0.#####} ...", a, a, ...);

复制字符串后的第一个对象,所以即使我写了,我也将所有数字都作为“a”

f.Write("{0:0.#####} {0:0.#####} ...", a, b, ...);

最佳答案

你最后一个例子的问题:

f.Write("{0:0.#####} {0:0.#####} ...", a, b, ...);

是不是冒号之前的格式字符串部分是格式参数数组的索引,所以如果你使用全零,你只会得到第 0 个参数。而是使用

f.Write("{0:0.#####} {1:0.#####} ...", a, b, ...);

此处 {1:0.#####} 将使用 b 等

除非您的代码对性能要求很高,否则我在不变区域性中格式化字符串的首选方法是使用方法 System.FormattableString.Invariant 在不变区域性中进行字符串插值:

using static System.FormattableString;


...
f.Write(Invariant($"{a:G5} {b:G5} {c:G5} {d:G5}"));
...

关于c# - 使用点分隔符将 double 写入文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58603192/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com