我的iPhone有一行的代码如下所示:绝对值不工作
double decimal2 = abs(newLocation.coordinate.longitude - degrees);
我想确保decimal2的值始终为正。但是,decimal2当前是-82。
任何人都可以解释这一点吗?我没有对decimal2的值做任何其他的事情。
谢谢。
我的iPhone有一行的代码如下所示:绝对值不工作
double decimal2 = abs(newLocation.coordinate.longitude - degrees);
我想确保decimal2的值始终为正。但是,decimal2当前是-82。
任何人都可以解释这一点吗?我没有对decimal2的值做任何其他的事情。
谢谢。
会建议你使用NSDecimalNumber
您可以使用NSDecimalNumber
类的内置功能,以-1适当数量比较零,然后乘以。例如:
- (NSDecimalNumber *)abs:(NSDecimalNumber *)num {
if [myNumber compare:[NSDecimalNumber zero]] == NSOrderedAscending) {
// Number is negative. Multiply by -1
NSDecimalNumber * negativeOne = [NSDecimalNumber decimalNumberWithMantissa:1
exponent:0
isNegative:YES];
return [num decimalNumberByMultiplyingBy:negativeOne];
} else {
return num;
}
}
在这种情况下
,没有精密
也许这个“abs”函数不是你认为的那样。你确定你知道它来自哪里吗?也许你或其他人定义了你自己的?没有理由为什么有效的“abs”函数会这样做。
您使用的是ABS()函数,该函数返回INT,但分配结果的双重损失。您应该将结果分配给int类型的变量,或者使用返回double的绝对值函数版本:double fabs(double)
。
我借用了一个例子中的代码。但我不明白它是如何操作绝对值函数的。 – rottendevice 2011-03-28 03:39:12