¿Por qué se devuelve el ángulo enumérico (NAN)? [duplicar] -- javascript campo con angularjs campo con nan camp Relacionados El problema

Why does angular.isNumber(NaN) return true? [duplicate]


3
vote

problema

Español
Esta pregunta ya tiene respuestas aquí :
¿Por qué TipoF NAN devuelve 'número'? (21 respuestas)
cerrado hace 5 años .

NAN Representa Not-A-NUMERO.

Parece que la angular. Enumérica, piensa que es un número. (angularjs 1.4.2) ¿Por qué la angular está enumérica, devuelve a la entrada NAN?

gracias

Original en ingles

NaN represents Not-A-Number.

It appears that angular.isNumber thinks it is a number. (angularjs 1.4.2) Why does angular.isNumber return true for NaN input?

thanks

        
       
       

Lista de respuestas

3
 
vote

citando Igorminar , desarrollador angular en este exacto Pregunta :

  send_ack0  

tiene sentido que si lo despiertan con ambos ojos y enchufe su oídos.

Si usa deliberadamente a Nan en su aplicación, debe usar Isnan en su lugar de enumeración angular.

Estoy inclinado a decir que el comportamiento actual, aunque un poco Sorprendente, es consistente con la forma en que Nan se está tratando en JavaScript . Si tiene algunos argumentos buenos para cambiar el comportamiento, por favor, comparte ellos con nosotros.

Así que la pregunta realmente va para el estándar JavaScript, no para angular

y para responder a esta pregunta debemos ir a Ecmascript 5 Especificación del tipo de número , por supuesto, dice:

4.3.20 Tipo de número

Conjunto de todos los valores de números posibles incluyendo el número especial "Not-A" Los valores (nan) , infinito positivo y infinito negativo

4.3.23 nan

valor numérico que es un valor de IEEE 754 "NO-A-número"

Entonces, sí, de acuerdo con lo último especificaciones de Ecmascript Soy un Número

 

Quoting IgorMinar, Angular Developer in this exact question:

$ node > typeof NaN 'number' 

It kind of makes sense if you squint with both eyes and plug your ears.

If you deliberately use NaN in your app, you should use isNaN instead of angular.isNumber.

I'm inclined to say that the current behavior, even though a bit surprising, is consistent with how NaN is being treated in javascript. If you have some good arguments for changing the behavior please share them with us.

So the question really goes for the javascript standard itself not for Angular

And to answer this question we must go to ECMAScript 5 specification of number type, of course it says:

4.3.20 Number type

set of all possible Number values including the special xe2x80x9cNot-a-Numberxe2x80x9d (NaN) values, positive infinity, and negative infinity

4.3.23 NaN

number value that is a IEEE 754 xe2x80x9cNot-a-Numberxe2x80x9d value

So yes, according to the latest ECMAScript Specification i'm a number

 
 
       
       
1
 
vote

Aquí está la mejor manera de pensar para explicar esto.

Aunque el valor de send_ack111111 lo representa algo que no es un número, el valor 99887776612 sigue siendo un número tipo < / em> (en el sentido del sistema tipo).

También es un valor definido para un número de punto flotante en IEEE 754, que es lo que utiliza Javascript para los números. Es sensato que los valores infinitos y NAN serían tipos de números.

 

Here's the best way that I can think of to explain this.

Although the value of NaN represents something that is not a number, the value NaN itself is still a number type (in the type system sense).

It's also a defined value for a floating point number in IEEE 754, which is what JavaScript uses for numbers. It is sensible that values infinity and NaN would be number types.

 
 
1
 
vote

la SPET ECMA Define a NAN como un IEEE 754 NÚMERO NO NÚMERO VALOR. Una de las razones para el send_ack3 global ser un número con fines de comparación. También se necesita representar los resultados numéricos indefinidos, como el valor de send_ack4 . Así que no es particularmente específico de Angularjs. Considere lo siguiente:

  send_ack5  

SO send_ack6 devuelve VERDADERO PARA send_ack7 Debido a que es un 99887776618 . Para verificar las numéricas, use send_ack9 < / a>.

 

The ECMA spec defines NaN as a IEEE 754 Not-a-Number number value. One reason for the NaN global being a number are comparison purposes. It is also needed to represent undefined numerical results, like the value of Math.sqrt(-1). So itxe2x80x99s not particularly AngularJS specific. Consider the following:

typeof NaN === "number"   // true typeof NaN === typeof NaN // true typeof NaN === typeof 123 // true NaN === NaN  // false isNaN(NaN)   // true isNaN(123)   // false isNaN('123') // false isNaN('|23') // true 

So isNumber returns true for NaN because it is a Number. To check for numerics, use isNaN().

 
 
0
 
vote

Lo más probable es que la angular utiliza el tipo de lo que pasa. Si el tipo es el número, entonces devuelve VERDADERO.

Si desea saber si algo es un número (excluyendo a NAN), puede hacer lo siguiente.

  function isNumber(val){   return angular.isNumber(val) && (val == val); }   

Esto funciona primero determinando si Val es un número. Si es de verificación para ver si es nan.

nan no es igual a sí mismo (o cualquier otro número para esa materia).

 

Most likely angular just uses the type of what you pass in. if the type is number then it returns true.

If you want to know if something is a number (excluding NaN) you can do the following.

function isNumber(val){   return angular.isNumber(val) && (val == val); } 

This works by first determing if val is a number. If it is check to see if it's NaN.

NaN is not equal to itself (or any other number for that matter).

 
 
0
 
vote

No está relacionado con angular, es JavaScript prueba esto

  typeof NaN   

devolverá number

 

it's not related to angular, it's JavaScript try this

typeof NaN 

it will return number

 
 
0
 
vote

Hay realmente dos significados de "Número" aquí:

  • la abreviatura "nan" significa que no hay una respuesta significativa a una operación matemática en particular; Usted podría decir "No el número"
  • Sin embargo, cada valor en un idioma como JS tiene un tipo, y el tipo de datos que entra y salen de las operaciones matemáticas se conoce en JS como "número"; Por lo tanto, cuando JS quiere un valor especial para decir que una operación matemática no tiene respuesta, ese valor especial es un número especial

Tenga en cuenta que esta aparente contradicción es menos obvia en otros idiomas, porque JS es inusual al tener solo un tipo numérico, en lugar de tipos de enteros y reales (al menos). Tener NAN como un valor de punto flotante es estándar en casi todos los idiomas modernos, pero debido a la palabra "número", quizás parece más sorprendente en JS.

La función angular es uno de un conjunto de utilidades para probar el tipo de valor. La documentación para ello menciona que devuelve verdadero para infinidades y nan, y Puntos a la función estándar isFinite para cuando eso no es deseable.

 

There are really two meanings of "number" here:

  • the abbreviation "NaN" means that there is no meaningful answer to a particular mathematical operation; you could say "no such number"
  • however, every value in a language like JS has a type, and the type of data which goes into and out of mathematical operations is known in JS as "number"; thus when JS wants a special value to say that a mathematical operation has no answer, that special value is a special number

Note that this apparent contradiction is less obvious in other languages, because JS is unusual in having only one numeric type, rather than (at least) integer and real/float types. Having NaN as a floating point value is standard across pretty much all modern languages, but because of the word "number", it perhaps seems more surprising in JS.

The Angular function is one of a set of utilities for testing the type of a value. The documentation for it mentions that it returns true for infinities and NaN, and points to the standard isFinite function for when that's not desirable.

 
 

Relacionados problema

1  Uso de IndexSlice para filtrar los cuadros de datos de Multiindex con Pandas  ( Using indexslice to filter multiindex dataframes with pandas ) 
Pregunta: ¿Cómo filtrar las filas de manera que devuelvo solo las filas donde la inyección no es igual a 0 o NAN y no pierde los valores de las otras column...

13  Alternativas a tipos anulables en C #  ( Alternatives to nullable types in c sharp ) 
Estoy escribiendo algoritmos que trabajan en serie de datos numéricos, donde a veces, un valor en la serie necesita ser nulo. Sin embargo, debido a que esta a...

1  Cadena hasta la fecha La conversión devuelve a Nan  ( String to date conversion returns nan ) 
Estoy usando un complemento del selector de DateTime JQuery y tengo tres cajas de texto a Viz., StartDate, EndDate, Difference. El complemento funciona perfec...

16  ¿Cómo es Scipy.minimize maneja a Nan?  ( How does scipy minimize handle nans ) 
Estoy usando el SLSQP Solver en Scipy.Minimizar para resolver un problema de optimización restringido. Muy a menudo, el solver intentará valores de parámetros...

1  DTTPES de baja memoria permitiendo a NAN  ( Low memory dtypes allowing nan ) 
Estoy tratando de identificar una forma de almacenar una serie de INT en las columnas de datos de datos, lo que permite valores faltantes. Como se conoce, s...

18  Devolver intencionalmente a nan  ( Intentionally return nan ) 
Estoy escribiendo un trazador de rayos y parte del proceso está disparando un rayo que puede o no golpear un objeto (objeto geométrico). Algunas de las ecuaci...

284  ¿Cuál es la razón para todas las comparaciones que regresan FALSO para los valores de IEEE754 NAN?  ( What is the rationale for all comparisons returning false for ieee754 nan values ) 
¿Por qué las comparaciones de los valores de NAN se comportan de manera diferente a todos los demás valores? Es decir, todas las comparaciones con los operado...

2  Haciendo numpy.nanargmin devuelva a nan si la columna es todo nan  ( Making numpy nanargmin return nan if column is all nan ) 
es posible usar numpy.nanargmin , para que devuelva numpy.nan , en columnas donde solo hay nans en ellos. En este momento, aumenta un ValueError , cuando e...

7  En ActionScript (nan == parsefloat (input.text)) advierte que siempre será falso. ¿Por qué?  ( In actionscript nan parsefloatinput text warns that it will always be false ) 
A pesar de los más bien claros Documentación que dice que parsefloat () puede devolver a nan como un valor, cuando escribo un bloque como: if ( NaN == ...

0  En Pandas, ¿cómo pueden todas las columnas que no contengan al menos una NAN se cayerá de un flujo de datos?  ( In pandas how can all columns that do not contain at least one nan be dropped f ) 
Tengo un marco de datos en el que algunas columnas tienen NaN valores. Quiero colocar todas las columnas que no tienen al menos un valor True4 en ellos. ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos