比较两个double或两个float值的最有效方法是什么?
简单地这样做是不正确的:
bool CompareDoubles1 (double A, double B)
{
return A == B;
}
Run Code Online (Sandbox Code Playgroud)
但是像这样:
bool CompareDoubles2 (double A, double B)
{
diff = A - B;
return (diff < EPSILON) && (-diff < EPSILON);
}
Run Code Online (Sandbox Code Playgroud)
似乎浪费处理.
有谁知道更聪明的浮动比较器?
我知道因UIKit使用CGFloat分辨率独立坐标系而使用.
但我想,以检查是否例如每次frame.origin.x是0它让我感到恶心:
if (theView.frame.origin.x == 0) {
// do important operation
}
Run Code Online (Sandbox Code Playgroud)
是不是CGFloat有比较时容易误报==,<=,>=,<,>?这是一个浮点,他们有不寻常的问题:0.0000000000041例如.
Objective-C在比较时是在内部处理这个,还是可能发生origin.x读取为零的情况并不是0真实的?
我有一个问题,我的二进制搜索算法找到2的平方根似乎是在一个无限循环并永远运行:
num = 2
low = 1
high = num
i = 0
while((i**2) != 2): #was while(low<high): but wasnt working with it either
i = low + (high - low) / 2;
sqrt = i * i
if (sqrt == num):
print(i)
elif(sqrt < num):
low = i
else:
high = i
print(sqrt)
testRoot = 2 ** (.5)
print(testRoot)
Run Code Online (Sandbox Code Playgroud)
我不确定我的while循环是否存在问题.我认为这将是一个非常直接的二进制搜索算法,稍作修改以适应平方根方面.
在运行我的代码时,我似乎无法让它产生任何输出.我不确定代码或编译器是否存在真正的问题,因为我认为我的算法与我过去的算法非常接近.
如何制定生成正弦扫频波的方程。我对信号处理很陌生,在网上找不到太多有关生成正弦扫频波的主题。请向我指出一些可用于生成方程式并在代码中使用的来源。谢谢。