Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2023.1.0 - Français


strtod

convertit chaque nombre décimal littéral (chaine de caractères) en sa valeur numérique

Syntaxe

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

Arguments

str

chaine de caractères, ou vecteur ou matrice de chaines de caractères.

decimalseparator

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

d

scalaire, vecteur ou matrice de nombres décimaux.

tails

matrice de chaines de caractères 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.
Report an issue
<< strsubst Chaînes de caractères strtok >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon May 22 12:39:43 CEST 2023