如何格式化字符串以使用 F# 在文件中打印

How to format strings to print in a file with F#

此代码在文件中以这种格式打印浮点数 f,ffffff(带逗号)并且数字是连续的,但我需要这样打印f.ffffff(带点)并且在每个数字后跳过一行,因此每个数字都有自己的行。关于我该怎么做的任何想法?

代码已编辑

module writeFiles = 
    let (w:float[]) = [|-1.3231725; 1.052134922; 1.23082055; 1.457748868; -0.3481141253; -0.06886428466; -1.473392229; 0.1103078722; -1.047231857; -2.641890652; -1.335060286; -0.9839854216; 0.1844535984; 3.087001584; -0.008467130841; 1.175365466; 1.637297522; 5.557832631; -0.2906445452; -0.4052301538; 1.766454088; -2.604325471; -1.807107036; -2.471407376; -2.204730614;|]
    let write secfilePath= 
        for j in 0 .. 24 do
            let z = w.[j].ToString()
            File.AppendAllText(secfilePath, z)
            //File.AppendAllLines(secfilePath, z)
            done

有几件事可以在您的代码中做得更好。

  1. 每次添加数字时,您都在一遍又一遍地打开文件
  2. z不需要可变
  3. 您可以将格式模式 and/or 文化传递给 ToString 调用
  4. 您可以迭代 filterMod.y 而不是 for 循环和数组索引器访问

我可能会选择更像

的东西
module writeFiles = 
    let write secfilePath= 
        let data = filterMod.y
                   |> Array.map (fun x -> x.ToString(CultureInfo.InvariantCulture))
        File.AppendAllLines(secfilePath, data)

它准备了一个字符串数组,其中 filterMod.y 的每个数字都使用 CultureInfo.InvariantCulture 进行格式化,这将使其使用 . 作为小数点分隔符。稍后它使用 AppendAllLines 将整个数组一次写入文件,其中每个元素都将写入单独的行。