本文介绍了如果是>一种是真的吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
右键,我想我真的是生活在梦中。我有下面这段code的,我编译和AIX机器上运行:
AIX 3 5
PowerPC_POWER5处理器类型
IBM XL C / C ++的AIX,V10.1
版本:10.01.0000.0003
#包括LT&;&stdio.h中GT;
#包括LT&;&math.h中GT;#定义RADIAN(X)((X)* ACOS(0.0)/ 90.0)双nearest_distance(双半径,双lon1,双LAT1,双lon2,双LAT2){
双rlat1 = RADIAN(LAT1);
双rlat2 = RADIAN(LAT2);
双rlon1 = lon1;
双rlon2 = lon2;
双A = 0,B = 0,C = 0; A = SIN(rlat1)*罪(rlat2)+ COS(rlat1)* COS(rlat2)* COS(rlon2-rlon1);
的printf(%LF \\ n,一);
如果(一个大于1){
的printf(aaaaaaaaaaaaaaaa \\ n);
}
B = ACOS(一);
C =半径* B; 返回半径*(ACOS(SIN(rlat1)*罪(rlat2)+
COS(rlat1)* COS(rlat2)* COS(rlon2-rlon1)));}INT主(INT ARGC,字符** argv的){
nearest_distance(6367.47,10,64,10,64);
返回0;
}
现在,值'一'的计算被报告为'1'后。而且,这AIX机器上,它看起来像1> 1作为我的如果输入的是真实的!而我的是什么,我认为是ACOS'1'返回NanQ因为1比1更大请问如何,甚至是可能的吗?我不知道该怎么想了!
在code适用于其他架构就好其中'一'真的需要什么,我认为是1,ACOS(a)为0的值。
解决方案
if (result == expectedResult)
Comparing with epsilon – absolute error
if (fabs(result - expectedResult) < 0.00001)
From Comparing floating point numbers
What Every Computer Scientist Should Know About Floating-Point Arithmetic
这篇关于如果是&gt;一种是真的吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!