2011-04-21 10 views
6

En el mma help docs for Position, el siguiente se indica en "Cuestiones posible"utilizando la posición correcta

In[1]:= Position[Range[-1, 1, 0.05], 0.1] 
Out[1]= {} 

No hay explicación dada sin embargo. ¿Por qué pasó esto? Entonces, si realmente necesito encontrar la posición de 0.1 en Range[-1,1,0.05], ¿cómo lo hago?

+0

Ignore el voto cercano ... Me divertí mucho al ver la opción de votar para cerrar, aunque no tengo suficiente representante y elijo una. Puedo ver que funciona solo en mis publicaciones y no en todo el sitio:/ –

+0

Pregunta relacionada: http://stackoverflow.com/questions/5185281/what-is-causing-this-strange-mathematica-result –

+6

o'b Has tenido un día intenso hoy. Agotando sus votos y votando para cerrar su propia publicación ... pheeeew :) –

Respuesta

9

Es una cuestión de precisión numérica: 0,1 en el Range no es lo mismo que internamente 0,1 escrito de la forma habitual de resolver esto es para comparar con Equal en lugar de lo implícito SameQ..

Position[Range[-1, 1, 0.05], x_ /; x == 0.1] 
+0

Gracias por la respuesta. Todavía estoy confundido un poco. Si hago 'FullForm @ Range [-1, 1, 0.05]', el valor correspondiente para '0.1' es' 0.10000000000000009'. Ahora si hago '0.10000000000000009 == 1', obtengo' False'. ¿Por qué devuelve 'True' en su código (que es, presumiblemente, cómo se encuentra la posición)? –

+0

Acabas de escribir: '0.10000000000000009 == 1', pero creo que te refieres a' 0.10000000000000009 == 0.1'; ¿Todavía devuelve 'False'? –

+0

basura. ¡mis ojos! ¡Ay! Soy un idiota. gracias por la ayuda. –

Cuestiones relacionadas