Почему поплавок не является двойным в 64-битной системе?

Учитывая int будет 4 байта в 32-битной системе и 8 байтов в 64-битной системе, почему float не лечится одинаково? Почему размер double ! = размер float в 64-битной системе? Учитывая, что лучший родной целочисленный тип выбирается, когда я объявляю int (что приводит к более высокая производительность), не должно случиться то же самое для float (что также приводит к увеличению производительности)?

Смежный вопрос: плохая идея объявить тип my_float (простите за имя!) это float на 32-битных системах и double на 64-битных системах?

10

Решение

Ваш вопрос основан на ложной предпосылке. На большинстве современных 64-битных систем int еще 4 байта. Зачем использовать вдвое больше памяти и вдвое больше пропускной способности памяти, когда такие большие целые числа так редко нужны? В типичных современных 64-разрядных системах математика для 64-разрядных целых чисел не быстрее, чем математика для 32-разрядных целых чисел, поэтому преимуществ не будет.

22

Другие решения

Других решений пока нет …