可能是一个愚蠢的问题,但我刚刚开始使用F#,并且遇到了一些问题。F# - 乘以float float
说我有这样的功能:
let multiplyByTwo x = x * 2
当我把这个像这样:
let result = multiplyByTwo 5
一切正常,结果是10
当我把它叫做像这样:
let result = multiplyByTwo 2.5
我期望得到5或5.0。但实际结果如下:
let result = multiplyByTwo 2.5 ;;
--------------------------------- ^^^stdin(4,28):error FS0001:此表达式预计有型
int
但这里有类型
float
因为我想这个功能是有些通用的(即同时接受浮点数和整数),我不喜欢这个。我当然的问题是:如何解决这个问题?
我不太了解F#因此评论,但我认为你的函数中的'2'被视为一个int并且期待x也是一个int,是否有某种方法可以投射? – RedEyedMonster
当我开始使用F#时,'float'和'int'的'不兼容性'曾经真的让我感到困扰,但是几年后,我慢慢认识到将它们视为不同类型的有用性。它经常迫使我问自己我真的*想要*。 – Benjol
我认为这是一个语言缺陷,我的解决方法是当我想处理实数并且不关心性能或准确性时,使用浮点数来处理所有事情。 –