Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要解释一下随机函数swift吗_Swift_Random - Fatal编程技术网

需要解释一下随机函数swift吗

需要解释一下随机函数swift吗,swift,random,Swift,Random,关于我的随机函数有一个问题:为什么它会给出这个错误 '4294967295' is not exactly representable as 'Float'; it becomes '4294967296' - 我的代码是 func random() ->CGFloat { return CGFloat(Float(arc4random()) / 0xFFFFFFFF) } func random(min: CGFloat, max: CGFloat) -> CGFloa

关于我的随机函数有一个问题:为什么它会给出这个错误

'4294967295' is not exactly representable as 'Float'; it becomes '4294967296'
-

我的代码是

func random() ->CGFloat {
    return CGFloat(Float(arc4random()) / 0xFFFFFFFF)
}
func  random(min: CGFloat, max: CGFloat) -> CGFloat {
    return random() * (max - min) + min
}
它不会改变应用程序的功能,但它只是突然出现

提前谢谢

一个数字的尾数有24个有效位,这不足以精确存储10位整数:

print(0xFFFFFFFF)             // 4294967295
print(Float(0xFFFFFFFF))      // 4.2949673e+09
print(Int(Float(0xFFFFFFFF))) // 4294967296
这不会影响您的代码,因为

Float(arc4random()) / Float(0xFFFFFFFF)
仍然是介于0.0和1.0之间的浮点数。将计算更改为

return CGFloat(arc4random()) / 0xFFFFFFFF
将修复64位平台上的警告:整数常量现在转换为(64位)
Double

但从Swift 4.2开始,您可以通过使用新的:

func random(min: CGFloat, max: CGFloat) -> CGFloat {
    return CGFloat.random(in: min...max)
}