我有一个CGFloat但需要它作为NSInteger.浮点值类似于2.0f,所以我不介意小数部分和失去精度.将其转换为NSInteger没有问题的合法方法是什么(当然,除了精度损失之外)?
NSInteger niceInt = niceCGFloat;
Run Code Online (Sandbox Code Playgroud)
看起来太简单了,闻起来很麻烦.也许你可以解释一下?
当以二进制表示时,2.0f实际上总是存在1.9999999999f的风险.然后转换为int将导致1而不是2.
为了避免这种情况,我会在浮点值上加0.5f.这也会使你的浮点数变圆,而不是截断浮点数.
NSInteger niceInt = niceCGFloat + 0.5f;
| 归档时间: |
|
| 查看次数: |
7293 次 |
| 最近记录: |