Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Português - 日本語 - Русский
Aide de Scilab >> Chaînes de caractères > strtod

strtod

convertit chaque nombre décimal littéral (texte) en sa valeur numérique

Syntaxe

d =  strtod(str [,decimalseparator])
[d, tails] = strtod(str [,decimalseparator])

Arguments

str

texte unique, ou vecteur ou matrice de textes.

decimalseparator

caractère "." (par défaut) ou "," : séparateur décimal reconnu

d

scalaire, vecteur ou matrice de nombres décimaux.

tails

matrice texte de taille identique à celle de str : tails(i) est la fin (éventuelle) de str(i) non prise en compte pour établir d(i), ou "" par défaut.

Description

[d, tails] = strtod(str) interprète chaque élément de str et tente de reconnaître un nombre décimal :

  • Si elle y parvient, au moins pour la partie initiale de str(i), la valeur numérique décimale correspondante est enregistrée dans d(i). Si d'autres caractères suivent la partie initiale interprétée de str(i), ils sont alors ignorés et sont indiqués dans tails(i) ; sinon, tails(i) retourne "".
  • Si aucun nombre décimal n'est reconnu, d(i) retourne %nan, et tails(i) retourne str(i).

  • Nombres complexes : strtod(..) reconnaît et retourne uniquement leur partie réelle (pour peu qu'elle soit écrite avant la partie imaginaire). Les symboles "i" ou "j" ne sont pas reconnus.
  • strtod(..) ne reconnaît aucun séparateur de milliers ou de millièmes, ni " ", ni "," ni aucun autre.
  • Seuls les nombres représentés en base 10 sont recherchés par strtod(..). Les nombres représentés en binaire, octal, hexadécimal ou autre base de numération ne sont pas reconnus.
  • strtod(..) ne reconnaît le nom d'aucune variable numérique prédéfinie de Scilab ou de l'utilisateur, ni aucune représentation de %inf. Ainsi aurons-nous :
    s = ["-0.034" "- 0.034"  "+1234.5678" "1234 5678"
         "-.764"  "+.432"    "12,231.7"   "-5.458,871"
         "1e43"   "-3.5d-12" "-1.2+i"     "i+1.2"
         ""       "%inf"     "Inf"        "-Inf"
         "%i"     "%pi"      "%e"         "%eps"
         "%F"     "0x19B"    "#14C4"      "o5745"
         ]
    strtod(s)
      s  =
    !-0.034  - 0.034   +1234.5678  1234 5678   !
    !-.764   +.432     12,231.7    -5.458,871  !
    !1e43    -3.5d-12  -1.2+i      i+1.2       !
    !        %inf      Inf         -Inf        !
    !%i      %pi       %e          %eps        !
    !%F      0x19B     #14C4       o5745       !
    
    --> strtod(s)
     ans  =
      -0.034       Nan         1234.5678   1234.
      -0.764       0.432       12.        -5.458
       1.000D+43  -3.500D-12  -1.2         Nan
       Nan         Nan         Nan         Nan
       Nan         Nan         Nan         Nan
       Nan         0.          Nan         Nan
    
  • strtod(..) n'interprète aucun caractère spécial protégé tel que "\n" ou "\t", etc.
  • Cette fonction est basée sur sa version existante en langage C, laquelle se comporte différemment sous Windows et sous Linux : Sous Windows, les caractères "d" ou "D" peuvent indifféremment être utilisés pour les exposants.

Exemples

s = ["123.556 abc " ".543"      "#58B" "0x73 " "%inf"
     "-1.47e-71"    "67,432.57" " 23,5" "-,57" "Inf" ]
[num, trail] = strtod(s);
num, "/"+trail+"/"

// Avec "," comme séparateur décimal :
[num, trail] = strtod(s, ",");
num, "/"+trail+"/"

Voir aussi

  • evstr — évalue des expressions Scilab et concatène leurs résultats
  • isnum — teste si une chaîne de caractères représente un nombre
  • isdigit — check that characters of a string are digits between 0 and 9
  • bin2dec — convert from binary to decimal
  • oct2dec — convert from octal to decimal
  • hex2dec — convert from hexadecimal to decimal

Historique

VersionDescription
5.5.0 Introduction de l'option "decimalseparator" (SEP 97).
5.4.1 Si str(i) ne représente aucune valeur numérique, d(i) vaut désormais Nan au lieu de 0.
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Feb 12 19:15:32 CET 2018