Objective c 在浮子上工作很辛苦
我真的不知道该叫什么名字 我正在检查两个浮点数的值是否相同。如果使用Objective c 在浮子上工作很辛苦,objective-c,Objective C,我真的不知道该叫什么名字 我正在检查两个浮点数的值是否相同。如果使用printf()或NSLog(),则值返回0.750000。但是,类似于if(value1==value2){return TRUE;}的行不起作用。我可以假设,实际上,浮点数超过了7位小数,并且printf()/NSLog()不能返回超过7位小数的值 我试着用谷歌搜索一种方法,看看如何将浮点数减少到小数点后的较小数量,或者简单地将其转换为另一种数据类型,但到目前为止,我没有得到这样的运气 您可以确定ε的最大值,在该值下,数字等
printf()
或NSLog()
,则值返回0.750000。但是,类似于if(value1==value2){return TRUE;}
的行不起作用。我可以假设,实际上,浮点数超过了7位小数,并且printf()
/NSLog()
不能返回超过7位小数的值
我试着用谷歌搜索一种方法,看看如何将浮点数减少到小数点后的较小数量,或者简单地将其转换为另一种数据类型,但到目前为止,我没有得到这样的运气 您可以确定ε的最大值,在该值下,数字等于。像
#define EPSILON 0.0001
if (fabs(floatA - floatB) < EPSILON) { retun TRUE; }
#定义ε0.0001
if(fabs(floatA-floatB)
fabs(x)
返回double
x的绝对值
您可能还希望使用
double
而不是float
数据类型(double
是float
大小的两倍)。您可以确定一个ε,它是数字等于的最大值。像
#define EPSILON 0.0001
if (fabs(floatA - floatB) < EPSILON) { retun TRUE; }
#定义ε0.0001
if(fabs(floatA-floatB)
fabs(x)
返回double
x的绝对值
您可能还希望使用
double
而不是float
数据类型(double
是float
大小的两倍)。在比较浮点数时,需要使用容差:
if (Abs(value1 - value2) < epsilon)
{
}
if(Abs(值1-2)
其中epsilon是一个值,如0.000001,当您比较浮点数时,需要使用公差:
if (Abs(value1 - value2) < epsilon)
{
}
if(Abs(值1-2)
其中epsilon是一个值,例如0.000001您可能希望查看
float.h
(http://www.gnu.org/software/libc/manual/html_node/Floating-Point-Parameters.html)对于ε的非任意定义。特别是,FLT\u EPSILON
和FLT\u DIG
您可能想看看float.h
(http://www.gnu.org/software/libc/manual/html_node/Floating-Point-Parameters.html)对于ε的非任意定义。特别是,FLT\u EPSILON
和FLT\u DIG
叹息。。。叹息。。。