Iphone 如何从CGFloat安全地创建NSInteger?
我有一个CGFloat,但作为一个NSInteger需要它。浮点值类似于2.0f,所以我不介意分数部分和失去精度。有什么合法的方法可以毫无困难地将其转换为NSInteger(当然,除了精度损失)Iphone 如何从CGFloat安全地创建NSInteger?,iphone,cocoa-touch,uikit,Iphone,Cocoa Touch,Uikit,我有一个CGFloat,但作为一个NSInteger需要它。浮点值类似于2.0f,所以我不介意分数部分和失去精度。有什么合法的方法可以毫无困难地将其转换为NSInteger(当然,除了精度损失) 看起来太简单了,闻起来像马车。也许你可以解释一下?当用二进制表示时,2.0f实际上可能是1.9999999f。转换为int将导致1而不是2 为了避免这种情况,我会给你的浮点值加上0.5f。这也会产生舍入浮点值的效果,而不是截断浮点值 NSInteger niceInt=niceCGFloat+0.5f您
看起来太简单了,闻起来像马车。也许你可以解释一下?当用二进制表示时,2.0f实际上可能是1.9999999f。转换为int将导致1而不是2 为了避免这种情况,我会给你的浮点值加上0.5f。这也会产生舍入浮点值的效果,而不是截断浮点值
NSInteger niceInt=niceCGFloat+0.5f代码>您需要将浮点舍入为长整数的c函数
NSInteger niceInt = niceCGFloat;