将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)
,没有问题。