<< strsubst Строки strtok >>

Scilab Help >> Строки > strtod

strtod

проверка синтаксиса и преобразование строк литеральных чисел в десятичные числа

Синтаксис

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

Аргументы

str

текстовый (строковый) одиночный элемент, вектор или матрица.

decimalseparator

выбранный десятичный разделитель: "." (по умолчанию) или ",".

d

скаляр, вектор или матрица десятичных чисел.

tails

строка или матрица строк: оставшиеся части str после начал чисел (если есть).

Описание

Инструкция [d, tails] = strtod(str) проверяет синтаксис каждого строкового значения str и пытается интерпретировать его содержимое как десятичное число:

  • Комплексные числа: функция strtod(..) проверяет синтаксис и возвращает только их вещественную часть при условии, что она записана перед мнимой частью.
  • strtod(..) не признаёт никаких разделителей тысяч, ни " ", ни ",", ни каких иных.
  • strtod(..) проверяет синтаксис строк только по десятичным числам. Она не интерпретирует строки шестнадцатеричных, восмеричных или иных чисел.
  • strtod(..) не интерпретирует никаких имён переменных, предопределённых в Scilab или предопределённых пользователем, или специальных строк %inf или %nan. Следовательно:
    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", "\t" и др.
  • Эта функция основана на Си-функции strtod, которая по-разному ведёт себя в Windows и Linux. На самом деле в Windows можно использовать "d" и "D" для экспонент, но нельзя использовать шестнадцатеричные числа.

Примеры

s = ["123.556 abc " ".543"      "#58B" "0x73 " "%inf"
     "-1.47e-71"    "67,432.57" " 23,5" "-,57" "Inf" ]
[num, trail] = strtod(s);
num, "/"+trail+"/"
// С "," в качестве десятичного разделителя:
[num, trail] = strtod(s, ",");
num, "/"+trail+"/"

Смотрите также

История

VersionDescription
5.5.0 Введена опция decimalseparator (SEP 97).
5.4.1 Если str не содержит никаких числовых значений, то теперь d возвращает Nan вместо 0.

Report an issue
<< strsubst Строки strtok >>