我正试图用浮点数做精确的计算
let pi = double (22/7)
printfn "%f" (cos(2.00*pi*1.00/2.00))
// output: -0.989992
Run Code Online (Sandbox Code Playgroud)
在计算器上我得到-1,所以它可以正确地向上和向下舍入,但是,当我在F#中执行此操作时,我得到结果/输出:-0.989992接近-1,但是如何获得输出-1所以它正确地向上和向下舍入?
我试着阅读有关该主题的内容,似乎我需要导入一个模块,这是真的吗?
你的计算不是因为舍入误差,而是因为22/7是π值的非常宽松的近似值.
Wolfram Alpha使用了比22/7更好的π近似值,这就是为什么你的计算显示了Wolfram Alpha的不同结果.
let pi = double (22/7)你应该只使用System.Math.PI(例如let pi = System.Math.PI),而不是做.这将为您提供准确的价值(cos(2.00*pi*1.00/2.00)).不需要四舍五入.
有关详细信息,请参阅文档Math.PI.