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

时间:2015-08-04 20:30:32

标签: f# f#-3.0

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

CODE EDITED

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 个答案:

答案 0 :(得分:0)

在代码中可以做得更好。

  1. 每次添加数字
  2. 时,您都会反复打开文件
  3. z不需要是可变的
  4. 您可以将格式模式和/或文化传递给ToString来电
  5. 您可以迭代filterMod.y而不是for循环和数组索引器访问
  6. 我可能会选择更像

    的东西
    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一次将整个数组写入文件,其中每个元素都将写在一个单独的行中。