<< strsubst Chaînes de caractères strtok >>

Scilab Help >> 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 :

  • 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

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.

Report an issue
<< strsubst Chaînes de caractères strtok >>