将Int转换为CGFloat的结果为0.000000

我试图从数组中取Int值并将它们转换为CGFloat以便我可以从这些红色,绿色和蓝色值创buildUIColor 。 很简单,对吗?

我可以成功地从数组中获得Int值,但是当我尝试转换为CGFloat ,结果是0.000000。 为什么是这样?

 let colorArray = NSUserDefaults.standardUserDefaults().arrayForKey("colors") let redValue = colorArray[0] as Int let greenValue = colorArray[1] as Int let blueValue = colorArray[2] as Int NSLog("%i", redValue) //prints 255 NSLog("%i", greenValue) //prints 250 NSLog("%i", blueValue) //prints 150 let redFloat = CGFloat(redValue) / 255.0 let greenFloat = CGFloat(greenValue) / 255.0 let blueFloat = CGFloat(blueValue) / 255.0 NSLog("%f", redFloat) //prints 0.000000 let color = UIColor(red: redFloat, green: greenFloat, blue: blueFloat, alpha: 1) 

如果我不除以255.0得到相同的结果 – 0.我在这里做错了什么?

这似乎是基础string格式和从CGFloat转换奇怪的问题。 NSString(format:_:)也会出现同样的问题。 如果你使用NSLog("%f", redFloat.native)或者print("\(redFloat)")或者只是print(redFloat) ,没有问题。