NaN — Константа


NaN — Константа

Ошибка -nan(ind) и nan
Доброго времени суток форумчане! Решаю задачу, в которой необходимо найти площадь треугольника по.

-nan(ind)
нужно вычислить значение функции, вроде сделал все проверки, но все равно при вводе отрицательного.

Проверка на NaN (С/С++)
Подскажите, пожалуйста, как проверить является ли вещественное число NaN’ом? Как вариант сделать.

Что такое nan?
Собственно вопрос: что такое nan? Допустим v=2 #include #include using.

Nan после вычисления
после вычисления значения выдает число, nan, число. как можно округлить до того значения, чтобы.

константа С / С ++ (NaN буквальная)?

Возможно ли это , чтобы назначить NaN к double или float в C / C ++? Как и в JavaScript вы: a = NaN . Так что позже вы можете проверить , если переменная является числом или нет.

В C, NAN объявляется .

В C ++ std::numeric_limits ::quiet_NaN() объявлен в
.

Но для проверки является ли значение NaN, вы не можете сравнить его с другим значением NaN. Вместо того, чтобы использовать isnan() из в C, или std::isnan() из в C ++.

Как уже указывалось , что Вы ищете , std::numeric_limits ::quiet_NaN() хотя я должен сказать , что я предпочитаю cppreference.com документы. Тем более , что это утверждение немного расплывчато:

Только смысл, если СТД :: numeric_limits :: has_quiet_NaN == верно.

и это было просто понять, что это означает , что на этом сайте, если вы проверяете свой раздел на std::numeric_limits::has_quiet_NaN это говорит:

Эта константа имеет смысл для всех типов с плавающей точкой и гарантированно будет верно, если СТД :: numeric_limits :: is_iec559 == верно.

который , как описано здесь , если true означает , что ваша платформа поддерживает IEEE 754 стандарт. Эта предыдущая нить объясняет это должно быть верно для большинства ситуаций.

NaN Constant Magic в Java — java

NaN= «NaN» означает «не число». «Нан» создается, если операция с плавающей запятой имеет некоторые входные параметры, которые вызывают операцию для получения некоторого результата undefined. Например, 0.0, деленное на 0,0, арифметически undefined. Взятие квадратного корня из отрицательного числа также undefined.

Я пытался использовать NaN Constant в Java

Итак, почему x == y является ложным?

    3 4
  • 22 окт 2020 2020-10-22 01:43:06
  • Rahul Agrawal


4 ответа

NaN — not-a-number не имеет никакого смысла при выполнении операции с номером NAN.so не может равняться.

  • 22 окт 2020 2020-10-22 01:43:07
  • Kalla

Два значения NaN не могут быть равны друг другу. Вы не знаете, какое значение undefined они представляют. А также вы не знаете, как они представлены.

специальное число NaN (not-a-number) неупорядочено и имеет следующие символы:

  • Операторы численного сравнения и >= всегда возвращают значение false, если один или оба операнда являются NaN.
  • Оператор равенства == возвращает false, если либо операнд равен NaN.
  • Оператор неравенства!= возвращает true, если либо операнд равен NaN.

Если вы определяете их следующим образом: —

  • 22 окт 2020 2020-10-22 01:43:07
  • Rohit Jain

Оператор равенства == возвращает false, если один из операндов равен NaN.

  • Операторы численного сравнения и >= return false, если один или оба операнда являются NaN (§15.20.1).
  • Оператор равенства == возвращает false, если либо операнд равен NaN.
  • В частности, (x = y) будет ложным, если x или y — NaN.
  • Оператор неравенства!= возвращает true, если любой операнд равен NaN (§15.21.1).

В частности, x!= x истинно тогда и только тогда, когда x является NaN.

NaN Константа Магия в Java

NaN = «NaN» означает «не число». «Нан» получается , если операция с плавающей точкой имеет некоторые входные параметры , которые вызывают операцию производить некоторые неопределенный результат. Так , например, 0,0 деленное на 0,0 арифметически не определено. Принимая квадратный корень из отрицательного числа также не определено.

Я пытался использовать NaN Константа в Java

Так почему х == у ложно?

NaN это понятие, а не значение или число. Поскольку эта концепция может представлять несколько значений нереальных чисел (мнимый, 0/0 и т.д.) это не имеет смысл говорить, что какая-либо конкретная NaN равно любой другой NaN.

Илон Маск рекомендует:  Что такое код mcrypt_module_get_algo_key_size

Точно так же вы не можете сказать , что Double::NEGATIVE_INFINITY равно самому себе, поскольку бесконечность не является числом либо.


Оператор равенства == возвращает ложь, если один из операндов равен NaN.

  • Численные операторы сравнения и> = возвращает ложь, если один или оба операнда является NaN (§15.20.1).
  • Оператор равенства == возвращает ложь, если один из операндов равен NaN.
  • В частности, (х = у) будет ложным, если х или у является NaN.
  • Оператор неравенства! = Возвращает истину, если один из операндов равен NaN (§15.21.1).

В частности, х! = Х истинно тогда и только тогда, когда х является NaN.

NaN — не-число не делает никакого смысла с при выполнении операции с NaN number.so ханжества равным.

Два NaN значения не могут быть равны друг другу .. Вы не знаете , что неопределенное значение они представляют .. А также вы не знаете , как они представлены ..

специальный номер NaN (not-a-number) является неупорядоченным и имеет следующие символы:

  • Числовые операторы сравнения и> = всегда возвращает ложь, если один или оба операнда имеют значение NaN.
  • Оператор равенства == возвращает ложь, если один из операндов равен NaN.
  • Оператор неравенства! = Возвращает истину, если один из операндов равен NaN.

Как использовать nan и inf в C?

У меня есть численный метод, который может вернуть nan или inf, если была ошибка, и для тестирования я хотел бы временно заставить его вернуть nan или inf, чтобы убедиться, что ситуация обрабатывается правильно. Есть надежный,независимый от компилятора способ создания значений nan и inf в C?

после googling около 10 минут я смог найти только зависимые от компилятора решения.

8 ответов

вы можете проверить, имеет ли ваша реализация:

существование INFINITY гарантируется C99 (или, по крайней мере, последним черновиком) и » расширяется до постоянного выражения типа float, представляющего положительный или неподписанный бесконечность, если доступно; иначе к положительной константе типа float, которая переполняется во время перевода.»

NAN может или не может быть определено, и » определяется тогда и только тогда, когда реализация поддерживает тихие NaNs для типа float. Он расширяется до постоянного выражения типа float, представляющего тихий NaN.»

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

ложно. Один из способов проверить, есть Ли Нэн:—16

вы также можете сделать: a != a чтобы проверить, если a Нэн.

есть еще isfinite() , isinf() , isnormal() и signbit() макросы в math.h в C99.

C99 также имеет nan функции:

нет независимого от компилятора способа сделать это, поскольку ни стандарты C (ни c++) не говорят, что математические типы с плавающей запятой должны поддерживать NAN или INF.

Edit: Я только что проверил формулировку стандарта C++, и он говорит, что эти функции (члены шаблонного класса numeric_limits):

wiill возвращает представления NAN «если доступно». Он не расширяет то, что означает «если доступно», но предположительно что-то вроде » если реализация FP rep поддерживает их». Аналогично, существует функция:

который возвращает положительный INF rep «если доступно».

Они оба определены в


заголовок-я бы предположил, что стандарт C имеет что-то подобное (возможно, также «если доступно»), но у меня нет копии текущего стандарта C99.

независимый от компилятора способ, но не независимый от процессора способ получить эти:

Это должно работать на любом процессоре, который использует формат с плавающей запятой IEEE 754 (что делает x86).

UPDATE: протестировано и обновлено.

это работает для обоих float и double :

изменить: Как кто-то уже сказал, старый стандарт IEEE сказал, что такие ценности должны создавать ловушки. Но новые компиляторы почти всегда выключайте ловушки и возвращайте заданные значения, потому что захват препятствует ошибке обращение.

NaN Константа Магия в Java

NaN = «NaN» означает «не число». «Нан» создается, если операция с плавающей запятой имеет некоторые входные параметры, которые вызывают операцию для получения некоторого неопределенного результата. Например, 0.0, деленное на 0.0, является арифметически неопределенным. Учет квадратного корня отрицательного числа также не определен.

Я пытался использовать NaN Константа Java

Так почему х == у ложно?

Создан 28 сен. 12 2012-09-28 04:06:19 Rahul Agrawal

Спасибо @ jenoosia, Это то, что я искал – Rahul Agrawal 28 сен. 12 2012-09-28 04:11:55

Илон Маск рекомендует:  Советы по написанию статей
4 ответа

NaN это понятие, а не значение или число. Поскольку это понятие может представлять множество значений не-реального числа (мнимых, 0/0 и т. Д.), Нет смысла говорить, что любое конкретное NaN равно любому другому NaN.

Аналогичным образом вы не можете сказать, что Double::NEGATIVE_INFINITY равно себе, поскольку бесконечность также не является числом.

Создан 28 сен. 12 2012-09-28 04:12:11 maerics

Два NaN значения не могут быть равны друг другу .. Вы не знаете, что неопределенное значение они представляют .. А также вы не знаете, как они представлены ..

специальный номер NaN (not-a-number) является неупорядоченным и имеет следующие символы:

  • числовые операторы сравнения , и> = всегда возвращать false, если один или оба операнда являются NaN.
  • Оператор равенства == возвращает false, если один из операндов равен NaN.
  • Оператор неравенства! = Возвращает true, если любой операнд равен NaN.

Если вы определили их как это: —

Создан 28 сен. 12 2012-09-28 04:11:16 Rohit Jain

Это не совсем так, это эквивалентно значению, возвращаемому Double.longBitsToDouble (0x7ff8000000000000L). – CloudyMarble 28 сен. 12 2012-09-28 04:17:03

@MeNoMore .. За какую часть вы это говорите. Думаю, для второй строки -> Вы не знаете, какое неопределенное значение они представляют. Возможно, вы правы, потому что я не уверен в этом. – Rohit Jain 28 сен. 12 2012-09-28 04:24:49

Я тоже имел в виду часть представления -> «вы не знаете, как они представлены». вы не можете теперь шляпу возглавить NaN, но Java заявляет о своей ценности, и вы можете показать им, что получите NaN, что является их представлением. – CloudyMarble 28 сен. 12 2012-09-28 04:45:41


Ok .. Спасибо MeNoMore .. Никогда не сталкивался с NaN лицом к лицу. Итак, не знаю много об этом. – Rohit Jain 28 сен. 12 2012-09-28 04:57:50

-1: вы должны указать источник, если вы берете что-то из этого источника. Описание взято из [Спецификации Java SE] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.2.3) – Prakash K 28 сен. 12 2012-09-28 05:06:57

@PrakashK .. Извините забыли, что .. Добавлен источник .. – Rohit Jain 28 сен. 12 2012-09-28 05:10:22

@PrakashK: Вы удаляете свой -1 после того, как он упомянул источник? – CloudyMarble 28 сен. 12 2012-09-28 05:23:03

@Rohit Jain Me niether :) Я только что прочитал его в JSL, так как я ответил на этот вопрос, поэтому я его знаю. +1 – CloudyMarble 28 сен. 12 2012-09-28 05:23:58

@MeNoMore .. HaHa :) .. Спасибо — за поддержку +1 Vote .. – Rohit Jain 28 сен. 12 2012-09-28 05:25:58

@MeNoMore Должен ли я не удалить его? – Prakash K 28 сен. 12 2012-09-28 05:27:59

Это действительно старый, я знаю, но я очень шокирован: как могли бы два экземпляра » ‘Double»’ инициализироваться ключевым словом’ » » » » » ‘нового»’, а затем сравнивались друг с другом с помощью’ » == ‘ » быть » ‘истина»’ . -1 для этого – spi 15 янв. 18 2020-01-15 11:03:49

Оператор равенства == возвращает false, если любой операнд NaN.

JSL sayes около NaN:

  • Числовые операторы сравнения и> = возвращают ложь, если один или оба операнда являются NaN (§15.20.1).
  • Оператор равенства == возвращает false, если один из операндов равен NaN.
  • В частности, (x = y) будет ложным, если x или y является NaN.
  • Оператор неравенства! = Возвращает true, если любой операнд NaN (§15.21.1).

В частности, x! = X истинно тогда и только тогда, когда x является NaN.

Создан 28 сен. 12 2012-09-28 04:13:15 CloudyMarble

NaN — не-номер не имеет никакого смысла при выполнении операции с номером NAN.so не может равняться.

Создан 28 сен. 12 2012-09-28 04:21:01 Kalla

PHP :: Вещественные числа

Синтаксис вещественных чисел в PHP

Вещественные числа (по-другому числа с плавающей точкой) записываются в одном из форматов, представленном в примере №1. Числа, расположенные в третьей и четвертой строках, представляют собой записи вещественных чисел в , где вместо 10 в указанной степени используется прописная или строчная буква E , после которой ставится необязательный знак плюс ‘+’ или минус ‘-‘ и в конце записывается показатель степени числа 10 .

Пример №1. Запись вещественных чисел в различных форматах

Илон Маск рекомендует:  Li списковый элемент

Числа с плавающей точкой имеют ограниченную точность, что может иногда приводить к неожиданным результатам (см. пример №2). Это связано с тем, что мы в основном привыкли вести расчеты в десятичной системе счисления, а компьютер перед вычислениями преобразует все числа в двоичную систему. Но не все вещественные числа могут быть точно преобразованы из десятичной системы счисления в двоичную, что и приводит к некоторой потере точности. Поэтому не стоит сравнивать вещественные числа и доверять их точности до последнего знака. Если же необходима высокая точность представления вещественных чисел, следует использовать специальные математические функции PHP произвольной точности, которые позволяют задать требуемую точность результата.

Пример №2. Побочные эффекты сложения вещественных чисел

Константа NAN

Операции с вещественными числами иногда могут приводить к специальному нечисловому результату, который в PHP представлен константой NAN (от англ. not a number). Обычно это может быть связано с выполнением недопустимых математических операций над числами или выходом за допустимый диапазон значений для данной математической функции.

Любое сравнение значения NAN с другим значением, даже с самим собой, всегда вернет FALSE , поэтому для определения ее наличия необходимо использовать специальную функцию is_nan() , которая вернет TRUE , если значение NAN , и FALSE в противном случае (см. пример №3).


Описание функций языка Си

All | _ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

isnan, isnanf, isnanl – проверяют, является ли аргумент не числом (nan).

int isnan (double x);
int isnanf (float x);
int isnanl (long double x);

x – проверяемое число с плавающей точкой.

0, если проверяемый аргумент – конечное число или бесконечность.
Отличное от нуля значение, если проверяемый аргумент не число (NAN).

Функции isnan, isnanf, isnanl проверяют, является ли аргумент не числом (NAN).

Функции isnan, isnanf, isnanl отличаются друг от друга типом аргумента. Так аргумент функции isnan является числом с плавающей точкой двойной точности (тип double, точность не менее десяти значащих десятичных цифр, разрядность — 64).

Аргумент функции isnanf является числом с плавающей точкой (тип float, точность не менее шести значащих десятичных цифр, разрядность — 32).

Аргумент функции isnanl является числом с плавающей точкой повышенной точности (тип long double, точность не менее десяти значащих десятичных цифр, разрядность — 80).

Функции isnan, isnanf, isnanl в ревизии C99 стандарта Си были продублированы макросом isnan, работающим с аргументом, заданным числом с плавающей точкой любого типа (float, double, long double).

В примере проверяется три аргумента, один из которых нормальное число, другой не число, а третий плюс бесконечность, с помощью функций isnan, isnanf, isnanl и результат выводится на консоль.

Аргументы: nan, inf, 104.563
Первый аргумент – не число.
Второй аргумент – конечное число или бесконечность.
Третий аргумент – конечное число или бесконечность.

NaN Constant

Description

(Please provide a description in your own words. It is illegal to use the wording from the Delphi Help.)

Technical Comments

(Known issues / Documentation clarifications / Things to be aware of)

Examples

(Please provide links to articles/source code that show how to use this item.)

See Also

(Please provide links to items specifically related to this item.)

User Comments/Tips

(Please leave your name with your comment.)

C / C ++ NaN константа (буквально)?

Можно ли назначить NaN для double или float в C/С++? Как и в JavaScript, вы делаете: a = NaN . Поэтому позже вы можете проверить, является ли переменная числом или нет.

4 ответа

В C, NAN объявляется в .

В С++ std::numeric_limits ::quiet_NaN() объявлен в
.

Но для проверки того, является ли значение NaN, вы не можете сравнить его с другим значением NaN. Вместо этого используйте isnan() из в C или std::isnan() из в С++.

Как указывали другие, вы ищете std::numeric_limits ::quiet_NaN() , хотя я должен сказать, что предпочитаю cppreference.com документы. Тем более, что это утверждение немного расплывчато:

Только значение, если std:: numeric_limits:: has_quiet_NaN == true.

и было легко понять, что это означает на этом сайте, если вы проверите их раздел на std::numeric_limits::has_quiet_NaN , он говорит:

Эта константа имеет смысл для всех типов с плавающей точкой и гарантируется, что она истинна, если std:: numeric_limits:: is_iec559 == true.

который, как описано здесь, если true означает, что ваша платформа поддерживает стандарт IEEE 754 . Этот предыдущий поток объясняет, что это должно быть правдой для большинства ситуаций.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL