F#中的输入字符串格式不正确

时间:2016-09-22 19:24:02

标签: f# formatexception

任何人都可以告诉我这段代码有什么问题并解释一下?

open System
let hexarea t:float =
    (3.0*Math.Sqrt(3.0)/2.0) * Math.Pow(t, 2.0)
let value = float (Console.ReadLine())
let calc = hexarea value
printfn "%f" calc

我可以提示,当它像

时一样
open System
let hexarea t : float =
    (3.0 * Math.Sqrt(3.0) / 2.0) * Math.Pow(t,2.0)
[<EntryPoint>]  
    let main argv =
    let value = float (Console.ReadLine())
    let calc  = hexarea value
    printf "%f" calc
    0

然后它有效。

请向我说明第一个代码发生了什么以及问题是什么。

另外,如果我从最后一行删除0,它就会抱怨..

1 个答案:

答案 0 :(得分:2)

如果你得到&#34;输入字符串的格式不正确&#34;如问题标题所示,例外情况可能是因为您在Console.ReadLine中输入的数字格式不正确。

如果您来自使用小数点而不是小数点的国家,这是一个持续的痛点。在捷克语中,我们写3,14,因此如果您将当前文化设置为cs-CZ,则会得到:

System.Threading.Thread.CurrentThread.CurrentCulture <- 
  System.Globalization.CultureInfo.GetCultureInfo("cs-CZ")

float "1.0" // Works because this uses invariant culture
System.Double.Parse("1.0") // Fails because this uses cs-CZ culture now

float "1,0" // Fails because the invariant culture requires .
System.Double.Parse("1,0") // Works according to cs-CZ culture