//
// CCNSNumber.h
// CCFC
//
#import <Foundation/Foundation.h>
//单精度浮点数是否可以看成等于0 (默认精确到小数点第六位)
#define FLOAT_EQUAL_TO_ZERO(floatNumber) \
(fabsf((float)(floatNumber) - 0.0f) < (float)1e-6)
// 判断两个单精度浮点数是否近似相等
#define FLOAT_EQUAL_TO_FLOAT(firstFloat, secondFloat) \
FLOAT_EQUAL_TO_ZERO(firstFloat - secondFloat)
@interface NSNumber(cc)
- (BOOL)floatEqualToZero;
- (BOOL)floatEqualToFloat:(NSNumber *)another;
// 判断两个整形加法是否溢出
+ (int)addCheckOverflow:(int)a withB:(int)b overFlow:(int *)overFlowFlag;
// 整型转换成字符串,返回转换后的字符串的实际长度
+ (int)itoa:(char *)str maxLen:(const int)maxLen num:(int)n;
// 根据角度获取弧度值
+ (double)getRadiusByDegrees:(double)degrees;
@end
//
// CCNSNumber.m
// CCFC
//
//
#import "CCNSNumber.h"
#import <math.h>
@implementation NSNumber(cc)
- (BOOL)floatEqualToZero
{
return FLOAT_EQUAL_TO_ZERO([self floatValue]);
}
- (BOOL)floatEqualToFloat:(NSNumber *)another
{
return FLOAT_EQUAL_TO_FLOAT([self floatValue], [another floatValue]);
}
// 判断两个整形加法是否溢出
+ (int)addCheckOverflow:(int)a withB:(int)b overFlow:(int *)overFlowFlag
{
int sum = a + b;
*overFlowFlag = 0;
if(a > 0 && b > 0 && sum < 0
|| a < 0 && b < 0 && sum > 0)
{
*overFlowFlag = 1;
}
return sum;
}
// 整型转换成字符串,返回转换后的字符串的实际长度
+ (int)itoa:(char *)str maxLen:(const int)maxLen num:(int)n
{
char temp[32] = {0};
int i = 0;
while(n)
{
if(i >= 32)
{
return -1;
}
temp[i++] = (n % 10) + '0'; // 将整型数的各位对应的字符值保存在数组中
n /= 10;
}
if(i > maxLen) // 长度过长,返回0
{
return -1;
}
int len = i;
int j = 0;
while (i >= 0)
{
str[j++] = temp[--i]; // 拷贝到外部字符串中
}
str[i] = '\0';
return len;
}
// 根据角度获取弧度值
+ (double)getRadiusByDegrees:(double)degrees
{
return degrees * M_PI / 180;
}
@end
微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。
欢迎关注。助您在编程路上越走越好!