«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как определить, соответствует ли компилятор C++ стандарту IEEE 754 с плавающей запятой?

Как определить, соответствует ли компилятор C++ стандарту IEEE 754 с плавающей запятой?

Опубликовано 19 ноября 2024 г.
Просматривать:922

How do you determine if a C   compiler conforms to the IEEE 754 floating point standard?

Проверка стандарта IEEE 754 с плавающей запятой в C

Определение того, соответствует ли компилятор C стандарту IEEE 754 с плавающей запятой, обычно выполняется с помощью определение компилятора. Однако техника, используемая для C, может не применяться непосредственно к C .

C -специфичный подход

К счастью, C предлагает простой метод для выполнения этой проверки с использованием numeric_limits class:

std::numeric_limits::is_iec559;

Это выражение имеет значение true, если компилятор использует IEEE 754, и значение false в противном случае. Аналогичную проверку можно выполнить для типа float:

std::numeric_limits::is_iec559;

Альтернативный метод

В качестве альтернативы подходу numeric_limits вы можете адаптировать вторую часть ответа Адама для C. :

#include 

int main() {
  // Check for IEEE 754 compliance by checking for a finite number of float exponents.
  if (std::numeric_limits::max_exponent == std::numeric_limits::max()) {
    // Compiler uses IEEE 754.
  } else {
    // Compiler does not use IEEE 754.
  }
}

Этот подход основан на том факте, что IEEE 754 определяет определенный диапазон показателей степени для чисел с плавающей запятой. Если максимальный показатель компилятора соответствует максимальному размеру целого числа, он, скорее всего, соответствует стандарту IEEE 754.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3