当我计算tan(π/2)时,得到-22877332,但tan(π/2)是无穷大的。
谷歌给出了3060023.30695为什么我得到了不同的答案
我试过mingw编译器,在google上都给出了不同的答案

float32 Tan_f32 (float32 ValValue )
{
float32 Result_Val;

 Result_Val= (tanf(ValValue));
 return Result_Val;
 }

在mingw编译器中,它给出了-22877332
在谷歌3060023.30695

最佳答案

因为π是无理的,所以不可能把π/2传递到tantanf,所以任何浮点数,无论多么精确,都至少与π/2略有不同。因此,tanf(ValValue)返回接近π/2的某个值的正切,该正切很大但不是无穷大的。
在用于float的通用格式IEEE-754基本32位二进制浮点中,最接近π/2的可表示数是1.57079637050628662109375这个数字的切线大约是22877332.4289,而最接近的值是22877332,这是你得到的结果。所以你的float为你输入的数字提供了最好的结果。

关于c - 为什么我的tan(PI/2)=无穷大,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54287492/

10-10 21:21