So sánh điểm nổi là chiều rộng gốc trên tất cả các kiến trúc OSX và iOS.
Đối float
, mà nói đến:
i386, x86_64:
- 32 chút XMM đăng ký (hoặc bộ nhớ cho toán hạng thứ hai)
- sử dụng một hướng dẫn trong gia đình của
ucomiss
ARM:
- 32 bit đăng ký
- sử dụng hướng dẫn trong cùng một gia đình như
vcmp
Một số trong những vấn đề quan điểm so sánh nổi đã được loại bỏ bằng cách hạn chế lưu trữ để 32/64 cho các loại. Các nền tảng khác có thể sử dụng FPU 80 bit gốc (ví dụ). Trên OS X, các chỉ lệnh SSE được ưu tiên và chúng sử dụng độ rộng tự nhiên. Vì vậy, làm giảm nhiều vấn đề so sánh điểm nổi.
Nhưng vẫn còn chỗ cho lỗi hoặc thời điểm bạn sẽ ưu tiên xấp xỉ. Một chi tiết ẩn về giá trị của các loại CGGeometry là chúng có thể được làm tròn thành một số nguyên lân cận (bạn có thể muốn tự làm điều này trong một số trường hợp).
Với phạm vi CGFloat (float
hoặc double
-x86_64) và giá trị tiêu biểu, nên giả định các giá trị được làm tròn thường được biểu diễn đủ chính xác, sao cho kết quả sẽ được so sánh phù hợp trong phần lớn các trường hợp. Do đó, nó "khá an toàn", "khá chính xác" và "khá nhanh" trong những giới hạn đó.
Vẫn có những lúc bạn có thể thích so sánh xấp xỉ trong tính toán hình học, nhưng triển khai của Apple là những gì tôi xem xét gần nhất với triển khai tham chiếu cho giải pháp chung trong ngữ cảnh này.
Tôi không chắc chắn trường hợp sử dụng là gì khi sử dụng '==' ở đó nhưng tôi cho rằng nó đảm bảo yêu cầu Apple giải thích rằng trong tài liệu. –