![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как определить, что переменная равна значениям NAN или -NAN ? [D7]
Single3 © (2006-12-25 06:10:00)NAN - это вообще сколько?
Я просто хочу сделать корректор, который бы проверял, и если у переменной такие значения, чтобы он их возвращал в рамки. А как это сделать?
Джо (2006-12-26 16:44:00) [1]> [8] Desdechado © (26.12.06 10:44)
> минус бесконечность
За это отвечая другая константа и другая функция: NegInfinity, IsInfinity.
Anatoly Podgoretsky (2006-12-26 12:29:00) [2]> Single3 (26.12.2006 2:07:07) [7]
Такого не бывает, знак относится только к числам.
Desdechado (2006-12-26 10:44:00) [3]минус бесконечность
Single3 (2006-12-26 02:07:00) [4]А -NAN ?
Такое тоже бывает.
ЮЮ (2006-12-25 07:24:00) [5]
> И не число - это сколько?
Если бы можно было сказать сколько, это было бы число :)
Разве single - это может быть не число?
Очевидно, когда exponent-а "зашкалила"
function IsNan(const AValue: Single): Boolean;
begin
Result := ((PLongWord(@AValue)^ and $7F800000) = $7F800000) and
((PLongWord(@AValue)^ and $007FFFFF) <> $00000000);
end;
Даже Extended может быть, чего уж там Single
function IsNan(const AValue: Extended): Boolean;
type
TExtented = packed record
Mantissa: Int64;
Exponent: Word;
end;
PExtended = ^TExtented;
begin
Result := ((PExtended(@AValue)^.Exponent and $7FFF) = $7FFF) and
((PExtended(@AValue)^.Mantissa and $7FFFFFFFFFFFFFFF) <> 0);
end;
Джидай (2006-12-25 07:23:00) [6]Дырка в микросхеме памяти это. Понятно?
ors_archangel (2006-12-25 07:17:00) [7]
> И не число - это сколько?
0 / 0 = NAN, sqrt(-1) = NAN, NAN - это не число, не сколько, неопределённость либо не существует
Single3 (2006-12-25 07:12:00) [8]Разве single - это может быть не число?
И не число - это сколько?
Джо (2006-12-25 06:12:00) [9]
> NAN - это вообще сколько?
NAT — это "not a number", т.е. "не число".
Джо (2006-12-25 06:11:00) [10]
uses Math;
IsNAN