获取randomFloat失败

时间:2014-04-22 18:31:51

标签: ios objective-c

为什么我的方法返回值< 0.4在某些情况下?
例如0.225501

#define ARC4RANDOM_MAX 0x100000000

float myVar = [self randomFloat:0.4 to:2];


- (float)randomFloat:(int)from to:(int)to
{
    return ((double)arc4random() / ARC4RANDOM_MAX) * (to - from) + from;
}

2 个答案:

答案 0 :(得分:3)

您正在将参数转换为整数(在您的情况下将范围更改为0到2之间),将参数更改为float

- (float)randomFloat:(float)from to:(float)to

答案 1 :(得分:0)

当划分和使用浮点数时,有时会丢失小数的精度。也许您可以使用具有N个固定位数的long并将小数点放在这些数字之前。有一天,当我添加(1 +(3/10))=应该是1.3时,我得到了奇怪的结果,但我总是有类似1.29995的东西。希望它有所帮助