为什么我的方法返回值< 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;
}
答案 0 :(得分:3)
您正在将参数转换为整数(在您的情况下将范围更改为0到2之间),将参数更改为float
。
- (float)randomFloat:(float)from to:(float)to
答案 1 :(得分:0)
当划分和使用浮点数时,有时会丢失小数的精度。也许您可以使用具有N个固定位数的long
并将小数点放在这些数字之前。有一天,当我添加(1 +(3/10))=应该是1.3时,我得到了奇怪的结果,但我总是有类似1.29995的东西。希望它有所帮助