点击或拖拽改变大小

Functions._Val 方法

X#
将包含数值的字符串转换为数值数据类型。

命名空间:  XSharp.Core
程序集:  XSharp.Core (在 XSharp.Core.dll 中) 版本:2.22 GA
语法
 FUNCTION _Val(
	cNumber AS STRING
) AS Object
查看代码

参数

cNumber
类型:String
要转换的字符串。cNumber 可以是任何编译器支持的基数格式,如二进制、十进制、十六进制或科学计数法。在科学计数法格式中,需要小数点来识别基数"E"。因此Val("1E+1")等于1,但Val("1.0E+1")等于10.0。此外,"+INF"和"-INF"(必须全部大写)分别表示正无穷和负无穷。

返回值

类型:Object
cNumber 的数值。
备注
如果 cNumber 是有效的数值表达式,Val() 会处理全部内容。但是,如果 cNumber 不完全是有效的数值表达式,但包含十进制数字,Val() 会一直评估直到遇到第二个小数点、第一个非数字字符或表达式结束。 前导空格始终被忽略。 所有包含 FLOAT 类型的变量都有内部的图片信息(类似模板),涉及数字和小数(参见 FloatFormat())。
对于 FLOAT 类型的数据库字段,这种图片信息存在于数据库头结构中,可以通过 FieldVal() 获取。 对于 Val() 函数和文字浮点数(即在源代码中硬编码,因此在编译时已知),小数位数从硬编码的小数部分派生,而数字位数则取自 SetDigit() 或 SET DIGIT 设置。 Str() 和 Transform() 与 Val() 密切相关,因为它们都将数值转换为字符串。
示例
此示例比较了 SetFixed() 为 TRUE 和 FALSE 时的结果:
X#
1FUNCTION Start()
2    SetDecimal(3)
3    SetFixed(FALSE)
4    ? Val("12.1234")        // 12.1234
5    SetFixed(TRUE)
6    ? Val("12.1234")        // 12.123
7    RETURN TRUE
这些示例展示了 SetFixed() 设置为 TRUE 且 SetDecimal() 设置为 2 时的 Val() 结果:
X#
1SetDecimal(2)
2SetFixed(TRUE)
3? Val("12.1234")            // 12.12
4? Val("12.1256")            // 12.13
5? Val("12A12")                // 12.00
6? Val("A1212")                // 0.00
7? Val(Space(1))            // 0.00
8? Val(" 12.12")            // 12.12
9? Val("12 .12")            // 12.00
此示例将 Val() 应用于十六进制字符串:
X#
1? Val("0xFF")                // 255
参见