我正在为Android编写“三角求解器”应用程序,我想知道是否有可能实现三角函数比率和弧度度量的精确值。例如,将90度输出为“ pi / 2”,而不是1.57079632679 ...
我知道,为了获得弧度小数的确切值,我会将其除以pi并将其转换为分数。我不知道如何将小数转换为小数。
像这样:
int decimal = angleMeasure / Math.PI;
someMethodToTurnItIntoAFraction(decimal);
我什至不知道从触发比率开始。
最佳答案
您需要取数字并将其除以每个“特殊”数字:pi,e,sqrt(2),sqrt(3),sqrt(5)。每次除法后,确定结果数是否接近精确的分数。要完成最后一部分,请使用连续分数算法找到该数字的良好近似值。您可以在连续分数扩展中使用一些标准,以确定近似值是否近似精确。如果您得到的分数几乎是精确的小数,那么这就是您的答案-分数乘以特殊数字后的数字。哦,将“ 1”视为除数,所以也可以得出简单的分数。
到那里去,这样做很好。我不记得在不存储和折叠整个连续分数的情况下获取近似分数的算法,但是最近在此处链接了该算法。
关于java - 如何计算触发函数的精确值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4950258/