在C atof
中有一些标准函数,例如atoi
和stdlib.h
,用于将字符串转换为浮点数/整数(并且反过来也是如此)。在Tcl中是否有相同的内容,或者我是否需要编写自己的流程来执行这些任务?
答案 0 :(得分:9)
Everything is a string,但是期望数字的函数(例如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
答案 1 :(得分:2)
如上所述,Tcl中的所有内容都是字符串,因此您可以将给定字符串用作整数或其他任何您需要的字符串。唯一需要注意的是它需要被解释为你想要用它的东西(即,你可以使用“a”作为整数)
您可以使用string is
子命令测试是否可以将某些内容解释为您想要的类型:
string is integer "5" ;# true
string is integer "a" ;# false
string is list "a b cc" ;# true
string is list "{a b}c" ;# false
答案 2 :(得分:1)
我还应该注意,atof
和atoi
的等效项可以被视为内部Tcl数据结构转换为外部二进制表示。这是由[binary format]
命令完成的。
答案 3 :(得分:0)
在表达式中使用$ x之前,可以测试string is double $x
。
例如,[string is double 1.2.3]
返回0
答案 4 :(得分:-2)
就我而言,这段代码有效:
set a [string trimleft $a 0]