在 Ruby 或 Python 中,在某些情况下2.0
会打印为1.99999999999
(或类似的东西)。据说是浮点数不准确。
在 Objective-C 中,到目前为止我还没有看到它发生...... Objective-C 处理浮点错误是否更好?
原因是,如果我们有这样的电话:
CGContextRef context = CGBitmapContextCreate(NULL,
size.width * scaleFactor, size.height * scaleFactor,
8, size.width * scaleFactor * 4, colorSpace,
kCGImageAlphaPremultipliedFirst);
andscaleFactor
是浮点数或双精度数(通常具有1.0
or的值),那么如果在转换为整数后2.0
出现任何浮点错误,则可能是一个问题。如果它是 bitmapContext 的大小,则问题不大,因为少 1 个像素宽不是什么大问题,但如果它是数据缓冲区的大小,提供给,那么 的大小,如果转换为,则这可能是一个问题,因为它可能导致错误的内存访问(分段错误或数据污染)。1536.0
1535
malloc
123456.0
123455