Поделиться через


Поддержка чисел с плавающей запятой

Многие функции библиотеки времени выполнения (Майкрософт) требуют, чтобы числа с плавающей запятой поддерживались математическим сопроцессором или библиотеками чисел с плавающей запятой компьютера. Функции для поддержки чисел с плавающей запятой загружаются только при необходимости.

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

Примеры кода, демонстрирующие обработку исключений чисел с плавающей запятой, см. в разделе _fpieee_flt.

Точность вычислений с плавающей запятой для промежуточных значений контролируется функциями _control87, _controlfp, __control87_2. По умолчанию для элемента управления точностью _controlfp задано значение 53 бита (_PC_53). Связывание с помощью FP10.OBJ заменяет значение по умолчанию значением 64 бита (_PC_64). В командной строке компоновщика FP10.OBJ должен стоять перед LIBC.LIB, LIBCMT.LIB или MSVCRT.LIB.

Функции с плавающей запятой

Подпрограмма

Применение

Эквивалент .NET Framework

abs

Возвращение абсолютного значения int

System::Math::Abs

acos, acosf

Вычисление арккосинуса

System::Math::Acos

asin, asinf

Вычисление арксинуса

System::Math::Asin

atan, atanf, atan2, atan2f

Вычисление арктангенса

System::Math::Atan, System::Math::Atan2

atof, _atof_l, _wtof, _wtof_l

Преобразование строки символов в значение двойной точности с плавающей запятой

System::Convert::ToSingle, System::Convert::ToDouble

Функции Бесселя

Вычисление функций Бесселя _j0, _j1, _jn, _y0, _y1, _yn

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Для получения дополнительной информации см. Примеры вызовов неуправляемого кода.

_cabs

Нахождение абсолютного значения сложного числа

Неприменимо.

cbrt

Вычисление кубического корня

Неприменимо.

ceil, ceilf

Нахождение верхней целой части целого числа

System::Math::Ceiling

_chgsign, _chgsignf, _chgsignl

Изменение знака числа двойной точности с плавающей запятой или аргумента числа двойной точности с плавающей запятой long double

Неприменимо.

_clear87, _clearfp

Получение и сброс слова состояния числа с плавающей запятой

Неприменимо.

_control87, _controlfp, __control87_2, _controlfp_s

Получение старого управляющего слова числа с плавающей запятой и задание нового значения управляющего слова

Неприменимо.

copysign, copysignf, copysignl, _copysign, _copysignf, _copysignl

Возвращение одного значения со знаком другого

Неприменимо.

cos, cosf, cosh, coshf

Вычисление косинуса

System::Math::Cos, System::Math::Cosh

difftime

Вычисление разницы между двумя указанными значениями времени

System::DateTime::Subtract

div

Деление одного целого числа на другое, возврат частного и остатка

Неприменимо.

_ecvt, _ecvt_s

Преобразование double в строку символов указанной длины

System::Convert::ToString

exp, expf

Вычисление экспоненциальной функции

System::Math::Exp

fabs, fabsf

Нахождение абсолютного значения

System::Math::Abs

_fcvt, _fcvt_s

Преобразование double в строку, имеющую заданное число цифр дробной части

System::Convert::ToString

_finite

Определение конечности данного числа двойной точности с плавающей запятой

System::Double::IsInfinity

floor, floorf

Нахождение самого большого целого числа, которое меньше или равно аргументу

System::Math::Floor

fmod, fmodf

Нахождение остатка с плавающей запятой

System::Math::IEEERemainder

_fpclass

Возвращение слова состояния, которое содержит сведения о классе чисел с плавающей запятой

System::Double::IsInfinity, System::Double::IsNegativeInfinity, System::Double::IsPositiveInfinity, System::Double::IsNan

_fpieee_flt

Вызов обработчика исключений и прерываний для исключений с плавающей запятой IEEE

Неприменимо.

_fpreset

Повторная инициализация математического пакета с плавающей запятой

 

frexp

Вычисление экспоненциального значения

Неприменимо.

_gcvt, _gcvt_s

Преобразование числа с плавающей запятой в строку символов

System::Convert::ToString

hypot, hypotf, hypotl, _hypot, _hypotf, _hypotl

Вычисление гипотенузы правильного треугольника

Неприменимо.

_isnan

Проверка того, что данное значение двойной точности с плавающей запятой не является числом (NaN)

System::Double::IsNan

labs

Возвращение абсолютного значения long

System::Math::Abs

ldexp

Вычисление произведения аргумента и 2exp (указанная степень)

System::Math::Pow

ldiv

Деление одного целого числа long на другое, возврат частного и остатка

Неприменимо.

log, logf, log10, log10f

Вычисление натурального логарифма или логарифма по основанию 10

System::Math::Log, System::Math::Log10

_logb

Извлечение экспоненциального значения аргумента числа двойной точности с плавающей запятой

Неприменимо.

_lrotl, _lrotr

Сдвиг unsigned long int влево (_lrotl) или вправо (_lrotr)

Неприменимо.

_matherr

Обработка математических ошибок

Неприменимо.

__max

Возвращение большего из двух значений

System::Math::Max

__min

Возвращение меньшего из двух значений

System::Math::Min

modf, modff

Разбиение аргумента на целую и дробную части

Неприменимо.

nan, nanf, nanl

Возвращение несигнального значения NaN (QNaN)

System::Double::NaN

_nextafter

Возвращение следующего представимого соседнего числа

Неприменимо.

pow, powf

Вычисление значения, возведенного в степень

System::Math::Pow

printf, _printf_l, wprintf, _wprintf_l, printf_s, _printf_s_l, wprintf_s, _wprintf_s_l

Запись данных в stdout согласно указанному формату

System::Console::Write, System::Console::WriteLine

rand, rand_s

Получение псевдослучайного числа

System::Random Class

rint, rintf, rintl

Округление до ближайшего целого числа в формате с плавающей запятой

System::Math::Round

_rotl, _rotr

Сдвиг unsigned int влево (_rotl) или вправо (_rotr)

Неприменимо.

_scalb

Масштабирование по степеням числа 2

Неприменимо.

scalbn, scalbnf, scalbnl, scalbln, scalblnf, scalblnl

Умножение на целую степень числа FLT_RADIX

Неприменимо.

scanf, wscanf, scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l

Чтение данных из stdin согласно указанному формату и запись данных в заданное расположение

System::Console::Read, System::Console::ReadLine

_set_controlfp

Задание нового значения контрольного слова

Неприменимо.

sin, sinf, sinh, sinhf

Вычисление синуса или гиперболического синуса

System::Math::Sin, System::Math::Sinh

sqrt

Нахождение квадратного корня

System::Math::Sqrt

srand

Инициализация серии псевдослучайных чисел

System::Random Class

_status87, _statusfp, _statusfp2

Получение слова состояния с плавающей запятой

Неприменимо.

strtod, _strtod_l, wcstod, _wcstod_l

Преобразование строки символов в значение двойной точности

System::Convert::ToDouble

tan, tanf, tanh, tanhf

Вычисление тангенса или гиперболического тангенса

System::Math::Tan, System::Math::Tanh

См. также

Ссылки

Процедуры среды выполнения по категориям