0

在 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.0or的值),那么如果在转换为整数后2.0出现任何浮点错误,则可能是一个问题。如果它是 bitmapContext 的大小,则问题不大,因为少 1 个像素宽不是什么大问题,但如果它是数据缓冲区的大小,提供给,那么 的大小,如果转换为,则这可能是一个问题,因为它可能导致错误的内存访问(分段错误或数据污染)。1536.01535malloc123456.0123455

4

0 回答 0