В .NET Framework, почему есть PointF (с плавающей точкой) и нет "PointD" (двойной)? - PullRequest
12 голосов
/ 07 июля 2010

Может кто-нибудь объяснить, почему в .NET Framework есть структуры PointF (использующие тип float с одинарной точностью) и нет "PointD" (использующие тип double с двойной точностью)?

Установили ли они, что такая точность никогда не будет иметь смысла в пространстве имен System.Drawing? Есть ли другая причина?

1 Ответ

20 голосов
/ 07 июля 2010

В то время, когда разрабатывался GDI + (технология, на которой основана System.Drawing), аппаратное обеспечение было далеко от производительности и возможностей сегодняшнего дня, а основанная на Double система координат наложила бы тяжелую нагрузку нааппаратные средства для очень маленькой выгоды на конце дисплея с дисплеями, имеющими размер и разрешение, которые они сделали.Даже с сегодняшними видеокартами-монстрами мы только в этом году видим возможность выполнять операции с плавающей запятой двойной точности, которые имеют приемлемую производительность, и они все еще вдвое меньше скорости операций с одинарной точностью.Таким образом, было выбрано практическое использование типов Single для моделирования графических операций.

Сегодня, с WPF, у нас есть платформа, которая началась с приближением следующего десятилетия или двух, и поэтому с использованием Double для моделирования системы координат имело смысл.

...