Есть ли в Tcl эквивалент функции 'string to X', найденной в C stdlib.h? - PullRequest
4 голосов
/ 22 августа 2011

Существуют стандартные функции, такие как atof и atoi в C stdlib.h для преобразования строк в числа с плавающей запятой / целых чисел (и для выполнения и наоборот). Есть ли в Tcl аналог этого или мне нужно написать собственный процесс для выполнения этих задач?

Ответы [ 5 ]

9 голосов
/ 22 августа 2011

Все является строкой в Tcl, но функции, которые ожидают число (например, expr), будут использовать эту «строку» как целое число:

% set str " 123 "
 123
% set num [expr $str*2]
246

Если вы хотите отформатировать число определенным образом (например, создать число с плавающей запятой определенной точности), вы можете использовать format:

% set str " 1.234 "
 1.234
% set fnum [format "%.2f" $str]
1.23
2 голосов
/ 23 августа 2011

Как уже отмечалось, в Tcl все является строкой, поэтому вы можете просто использовать данную строку как целое число или как угодно, что вам нужно.Единственное предостережение в том, что оно должно быть чем-то, что может быть истолковано как то, что вы хотите использовать как (то есть вы можете использовать «a» как целое число)

Вы можете проверить, может ли что-тоинтерпретируется как тип, который вы хотите использовать с помощью подкоманды <a href="http://wiki.tcl.tk/10166" rel="nofollow">string is</a>:

string is integer "5" ;# true
string is integer "a" ;# false
string is list "a b cc" ;# true
string is list "{a b}c" ;# false
1 голос
/ 23 августа 2011

Следует также отметить, что эквиваленты atof и atoi можно рассматривать как преобразование внутренних структур данных Tcl во внешние двоичные представления. Это делается командой [binary format].

0 голосов
/ 19 января 2017

В моем случае этот код работал:

set a [string trimleft $a 0] 
0 голосов
/ 21 августа 2015

Можно проверить string is double $x перед использованием $ x в выражениях.

Например, [string is double 1.2.3] возвращает 0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...