Definitive answer on the correct str2double behavior for the string '10 20'

1 visualización (últimos 30 días)
Under Windows 7 with R2014a, str2double('10 20') evaluates to NaN. I believe this is the correct behavior, per the documentation.
A colleague working in a Linux environment with R2014a reports that str2double('10 20') evaluates to an array [10 20].
1. Is this possible (without overloading)? 2. Am I correct that the intended evaluation (without overloading) is NaN?
Thanks so much.

Respuesta aceptada

per isakson
per isakson el 10 de Jul. de 2014
Editada: per isakson el 10 de Jul. de 2014
"str2double('10 20') evaluates to an array [10 20]." . If that is the case it should be reported as a bug
  1. It should not be possible without overloading
  2. You are correct
I advise against unrestricted use of str2num. It uses eval and ... , e.g.
>> str2num( 'sin([0:0.8:2*pi])')
ans =
0 0.7174 0.9996 0.6755 -0.0584 -0.7568 -0.9962 -0.6313
IMO: sscanf is a better alternative
>> vec = sscanf( '10 20', '%f' )
vec =
10
20

Más respuestas (1)

Azzi Abdelmalek
Azzi Abdelmalek el 9 de Jul. de 2014
Editada: Azzi Abdelmalek el 9 de Jul. de 2014
str2num('10 20')
will give an array, maybe that's what your colleague has used
  1 comentario
Nicholas
Nicholas el 10 de Jul. de 2014
Thanks Azzi. Yes, we ended up changing the code to use str2num, to give OS independent results. But I am still curious about: a) the definitive (Mathworks intended) behavior of str2double; and b) whether OS can in fact affect behavior (I don't have a Linux machine here to investigate further).

Iniciar sesión para comentar.

Categorías

Más información sobre Data Type Conversion en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by