Проверка стандарта 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