错误FS0001:类型'int'与'float'类型不匹配

时间:2014-06-25 00:37:53

标签: f#

我有一个简单的温度转换器类,我正在努力。

open System

type Converter() = 
 member this.FtoC (f : float) = (5/9) * (f - 32.0)

 member this.CtoF(c : float) = (9/5) * c + 32.0

let conv = Converter()

54.0 |> conv.FtoC  |> printfn "54 F to C: %A" 

32.0 |> conv.CtoF |> printfn "32 C to F: %A"

我收到以下编译错误

prog.fs(4,46): error FS0001: The type 'float' does not match the type 'int'

prog.fs(4,39): error FS0043: The type 'float' does not match the type 'int'

我错过了什么?它推断为int的代码的哪一部分?

1 个答案:

答案 0 :(得分:4)

F#不会自动将整数转换为浮点数,因此您需要:

type Converter() = 
  member this.FtoC (f : float) = (5.0/9.0) * (f - 32.0)
  member this.CtoF(c : float) = (9.0/5.0) * c + 32.0

在原始代码中5/9的类型为intf-32.0的类型为float。像*这样的数字运算符要求两个参数属于同一类型,因此会出现错误。在固定版本中,我使用5.0/9.0,类型为float(因为它使用浮点数字文字),因此编译器很高兴。