在F#Interactive中,以下代码起作用:
> printfn "%A" (decimal 1I)
1M
但是,在已编译的F#程序中,出现错误消息:
The type 'Numerics.BigInteger' does not support a conversion to the type 'decimal'
那里发生了什么?是因为在F#版本之间使用了不同的一组引用(以及引用的版本)?或
decimal
的内部表示形式在编译和解释模式之间是不同的。
最佳答案
这可能是因为您的F#编译程序针对的是.NET Framework 2.0/F#2.0。 F#交互式正在使用.NET Framework 4.0/F#4.0。
2.0框架使用FSharp.Core中的BigInteger
。 4.0框架使用System.Numerics.BigInteger
。 FSharp.Core 1没有转换为十进制。
将项目更改为目标.NET 4.0,并添加对System.Numerics的引用,所有内容都应匹配。
关于f# - 十进制转换F#脚本与编译后的F#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8045079/