![]()  | 
![]() ![]() ![]() ![]()  | 
![]()  | 
ReferenceBoost , Math Toolkit 2.5.0 , Facets for Floating-Point Infinities and NaNs
  
  
   | 
||||||||||||||||||||||||||||||||||||||||||
| 
                 число  | 
                 Струна  | 
|---|---|
Положительная бесконечность  | 
Инф  | 
Положительная нан  | 
Нэн  | 
Отрицательная бесконечность  | 
-инф  | 
Отрицательное НАН  | 
-нан  | 
Эти числа могут быть типа<float>,<double>и<long
       double>. Струны могут быть во всех нижних или во всех верхних случаях. Дополнительный знак + может использоваться с положительными числами. Это можно контролировать с помощью<uppercase>,<lowercase>,<showpos>и<noshowpos>манипуляторов. Форматирование целых чисел, булевых значений и конечных чисел с плавающей точкой просто делегировано нормальному<std::num_put>.
nonfinite_num_get
      template<class CharType, class InputIterator = std::istreambuf_iterator<CharType> > class nonfinite_num_get;
<nonfinite_num_get<CharType,InputIterator>>является производным от<std::num_get<CharType,IntputIterator>>. Таким образом, это грань, которая парсирует строки, которые представляют числа. Первым аргументом шаблона является тип символа строк, обычно<char>или<wchar_t>. Второй аргумент шаблона - это тип итератора, используемого для чтения строк. Он должен быть входным итератором. Обычно используется по умолчанию. Общественный интерфейс класса состоит только из одного конструктора:
nonfinite_num_get(int flags = 0);
Аргумент о флагах рассматривается ниже.<class
       templatenonfinite_num_get>определяется в заголовке<boost/math/nonfinite_num_facets.hpp>и живет в<namespace
       boost::math>.
В отличие от граней<std::num_get>, грань<nonfinite_num_get>парсирует струны, которые представляют<infinity>и<NaN>последовательным и переносимым образом. Он точно распознает представления строк, указанные стандартом C99:
| 
                 число  | 
                 Струна  | 
|---|---|
Положительная бесконечность  | 
инф, бесконечность  | 
Положительная нан  | 
Нэн, Нэн (...)  | 
Отрицательная бесконечность  | 
-инф, -бесконечность  | 
Отрицательное НАН  | 
-nan, -nan(...)  | 
Эти числа могут быть типа<float>,<double>и<long
       double>. Лицевая сторона нечувствительна к случаю. Дополнительный знак + может использоваться с положительными числами. Точки в nan (...) обозначают произвольную строку, обычно содержащую.Полезная нагрузка NaN. Парсирование строк, представляющих целые числа, булевы значения и конечные числа с плавающей точкой делегировано на<std::num_get>.
Когда грань парсирует строку, которая представляет<infinity>на платформе, которой не хватает бесконечности, то устанавливается бит отказа потока.
Когда грань парсирует строку, которая представляет<NaN>на платформе, которой не хватает NaN, то устанавливается бит отказа потока.
Конструкторы для<nonfinite_num_put>и<nonfinite_num_get>берут дополнительный бит флагов аргумент. Существует четыре разных битовых флага:
Флаги могут быть объединены с OR<operator|>.
Флаги обозначены в заголовке<boost/math/nonfinite_num_facets.hpp>и живут в<namespace
       boost::math>.
Унаследованный флаг не имеет эффекта с выходной гранью<nonfinite_num_put>.
Если флаг наследия используется с<nonfinite_num_get>входной гранью, то грань распознает все следующие представления строк<infinity>и<NaN>:
| 
                 число  | 
                 Струна  | 
|---|---|
Положительная бесконечность  | 
inf, infinity, one#inf  | 
Положительная нан  | 
nan, nan(...), nanq, nans, qnan, snan, one#ind, one#qnan, one#snan  | 
Отрицательная бесконечность  | 
-inf, -infinity, -one#inf  | 
Отрицательное НАН  | 
-nan, -nan(...), -nanq, -nans, -qnan, -snan, -one#ind, - one#qnan, -one#snan  | 
float>,<double>и<longdouble>.+>может использоваться с положительными значениями.nan(...)>обозначают произвольную строку.one>означает любую строку, которая<std::num_get>парсирует как число<1>, обычно «1.#INF», «1.QNAN», но также «000001.#INF» ...Список включает в себя ряд нестандартных струнных представлений бесконечности и NaN, которые используются различными существующими реализациями стандартной библиотеки C++, а также струнные представления, используемые другими языками программирования.
Если флаг<signed_zero>используется с<nonfinite_num_put>, то грань всегда будет различать положительный и отрицательный ноль. Он будет форматировать положительный ноль как «0» или «+0», а отрицательный ноль как «-0». Положительный ноль можно контролировать с помощью манипуляторов<showpos>и<noshowpos>.
<signed_zeroflag>не имеет эффекта с входной гранью<nonfinite_num_get>. Вводная грань<nonfinite_num_get>всегда парсирует «0» и «+0» как положительный ноль и «-0» как отрицательный ноль, как и большинство реализаций<std::num_get>.
![]()  | 
Note | 
|---|---|
Если флаг<  | 
![]()  | 
Tip | 
|---|---|
Отрицательное нулевое значение может быть получено с помощью функции<  | 
Если флаг<trap_infinity>используется с<nonfinite_num_put>, то грань бросит исключение типа<std::ios_base::failure>при попытке форматировать положительную или отрицательную бесконечность. Если грань вызывается от оператора вставки потока, то поток улавливает это исключение и устанавливает либо его<fail
       bit>, либо его<bad
       bit>. Какой бит установлен, зависит от платформы.
Если флаг<trap_infinity>используется с<nonfinite_num_get>, то грань установит<fail
       bit>потока при попытке разобрать строку, представляющую положительную или отрицательную бесконечность.
(См. Обоснование дизайна ниже для обсуждения этой непоследовательности.)
Так же, как<trap_infinity>, но вместо этого в ловушку попадают положительные и отрицательные NaN.
Статья Reference раздела Math Toolkit 2.5.0 Facets for Floating-Point Infinities and NaNs может быть полезна для разработчиков на c++ и boost.
:: Главная :: Facets for Floating-Point Infinities and NaNs ::
реклама  |