0

也许这是一个愚蠢的问题,但我真的无法理解。由于某种原因,我的程序中的浮点值在赋值语句期间被四舍五入。

这是代码:

Float64 time,test;

for( Shot *sh in _arrayOfShots)
{
    time = sh.bFrameTime; 
    // right here time variable gets value rounded up to 2 decimal places
    // for example: if sh.bFrameTime = 81.919998 => time = 81.92

    NSNumber *num = [NSNumber numberWithFloat:time];

    test = [num floatValue];

    [edgeTime addObject:num];
}

// this is my Shot object structure

@interface Shot : NSObject
{
    int bFrame;
    int eFrame;

     Float64 bFrameTime;
}

如果有人知道如何处理这个问题,请给我提示!

谢谢!

4

2 回答 2

1

81.919998 => 时间 = 81.92

不是“四舍五入到小数点后两位”。两者之差为 0.000002,幅度变化 0.0000000244,即小数点后 8 位左右。如果您的源值是单精度浮点数,那么它只有 7 个小数位的精度。(但是您没有显示该声明,因此我们无法确定。)

差异也可能与您显示这两个值的方式有关,因为 NSLog 会进行少量舍入。

于 2012-10-25T21:48:33.313 回答
0

添加一个 if 语句,检查四舍五入的数字是否大于初始数字,如果是,则将其减去 1

于 2012-10-25T21:01:59.113 回答