关于无符号整型和浮点数四舍五入容易引发错误的地方(原创)

    NSMutableArray *ar = [[NSMutableArray alloc]init];

    for (int i = 0; i<[ar count]-1; i++) {

        NSLog(@"test:%d",i);

    }

 

由于 [ar count] 返回为 无符号类型,[ar count]-1 将会为最大整数,此循环会一直循环而不会退出.

如果改成 

    for (int i = 0; i<(int)[ar count]-1; i++) {

 

则 不会进入循环。

 

int i = 5.9;

则不会四舍五入,i为5。

    NSString *str = [NSString stringWithFormat:@"%.1f",5.39]; 四舍五入 @"5.4"

 

    NSString *str = [NSString stringWithFormat:@"%.1f",5.9]; 四舍五入 @"6"

 

注意浮点数在存储时会有偏差,所以4.5在数据库表示可能是4.499999999 或者 4.500000001等

,因此 4.5 小数点后一位四舍五入为 4.4999 当成4.4 取整4. 4.500001取整为 4.5.

 

另外在无符号和有符号类型比较大小时,切记将类型转换为相同类型,当取值为负容易出现问题。

 

posted on 2014-12-22 12:07  Jason_Luo  阅读(603)  评论(0编辑  收藏  举报

导航