с плавающей точкой — Как иметь 32-битное и 64-битное плавающее число в переполнении стека

У меня есть спецификация файла (здесь: http://www.septentrio.com/secure/asterx1v_2_1/SBF%20Reference%20Guide.pdf) поля, помеченные как 32-битные и 64-битные числа с плавающей точкой (см. стр. 8). Как я могу использовать обе ширины в моей программе? Я сейчас занимаюсь разработкой для Mac OSX, но я также буду развертывать на машине с Linux.

Больше деталей:

Я знаю, что могу сказать компилятору ширину, но как я могу различить две разные ширины с плавающей точкой? Возможно, у кого-то также есть предложение изменить способ синтаксического анализа, который заключается в том, чтобы повторно интерпретировать_cast (buffer + offset) и затем использовать значения. Эти размеры файлов огромны (4 ГБ), поэтому мне нужна производительность.

0

Решение

Тем не менее это может показаться очевидным:

На платформе Intel и многих других float является 32-битным значением с плавающей точкой, и double является 64-битным значением с плавающей точкой. Попробуйте этот подход. Скорее всего, это будет работать.

Чтобы быть абсолютно уверенным, проверяйте размер ваших типов в начале вашей программы или статически во время компиляции, если ваш компилятор позволяет это.

Еще раз, попробуйте сначала простое решение.

Плавающая и двойная арифметика реализована на Intel и работает быстро. В любом случае нативная арифметика — самая быстрая из того, что вы можете получить от процессора.

IEEE 754 (http://en.wikipedia.org/wiki/IEEE_floating_point) определяет не один формат с плавающей запятой, а несколько, например 4, 8, 16 байтов и т. д. Все они имеют различный диапазон и точность, но все они все еще являются значениями IEEE.

1

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector