Functions.Str 方法 | |
将数值表达式转换为字符串。
命名空间:
XSharp.RT
程序集:
XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法 FUNCTION Str(
nNumber,
nLength,
nDecimals
) AS STRING CLIPPER
[ClipperCallingConventionAttribute(new string[] { ... })]
public static string Str(
__Usual nNumber = default,
__Usual nLength = default,
__Usual nDecimals = default
)
查看代码参数
- nNumber (Optional)
- 类型:__Usual
要转换为字符串的数值表达式。 - nLength (Optional)
- 类型:__Usual
要返回的字符串长度,包括小数位、小数点和符号。
值为 -1 表示禁止任何右侧填充。但是,小数位仍然根据 nDecimals 指定的数量返回。
如果未指定 nLength,则由 SetDigit() 和 SetDigitFixed() 决定返回的数字位数。
- nDecimals (Optional)
- 类型:__Usual
返回值中的小数位数。
值为 -1 表示仅返回小数点右侧的有效数字(见下例)。
返回值中的整数位数仍由 nLength 参数决定。
如果未指定 nDecimals,则由 SetDecimal() 和 SetFixed() 决定返回的小数位数。
小数点的表示由 SetDecimalSep() 的当前设置决定。
返回值
类型:
String
一个字符串,具有以下例外:
如果
nNumber 是产生数值溢出的表达式,则会产生运行时错误,该错误可以通过当前安装的错误处理程序处理。错误处理程序返回 "+INF" 或 "-INF",表示最大可能的浮点数。
如果
nLength 小于
nNumber 中的整数位数,则结果将以科学计数法返回。
如果科学计数法的结果不适合,则返回一系列星号。
取整由以下内容决定:
如果
nLength 小于返回字符串的小数部分所需的小数位数,则返回值四舍五入到可用的小数位数。
如果指定了
nLength,但省略了
nDecimals(没有小数位),则返回值四舍五入为整数。
如果未指定
nLength 和
nDecimals,则它们将从 FLOAT 内部浮点格式中获取,或者从 SetDigit() 中获取,如果内部数字位数为 0。
如果 SetFixed() 或 SetDigitFixed() 为 TRUE,则这些值将被 SetDecimal() 或 SetDigit() 的值覆盖。
如果 SetScience() 为 TRUE,则返回值将以科学计数法返回。此外,如果 SetDigit() 指定的数字小于
nNumber 的整数位数,并且 SetDigitFixed() 设置为 TRUE,则结果将以科学计数法返回。但如果科学计数法不适合,则结果是一系列星号。
备注
Str() 通常用于将数字连接到字符串。因此,它对于根据数字创建项的代码(例如,部件编号)以及创建结合数值和字符数据的订单键非常有用。
Str() 类似于 Transform(),它使用掩码而不是长度和小数规格来格式化数字为字符串。
Str() 的逆函数是 Val(),它将格式为字符串的数字转换为数值。
示例
这些示例演示了 Str() 返回值范围,具体取决于指定的参数:
1nNumber := 123.45
2? Str(nNumber)
3? Str(nNumber, 4)
4? Str(nNumber, 2)
5? Str(nNumber * 10, 7, 2)
6? Str(nNumber * 10, 12, 4)
7? Str(nNumber, 10, 1)
8? Str(123.45, -1)
9? Str(123.45, -1, 2)
10? Str(0.45000, 12, -1)
通常两个数字显示相同的结果,但它们内部存储的值不同。因此,等式测试将失败(返回 FALSE),除非您对每一侧进行四舍五入。以下是一个示例:
1? nNum
2
3? MyFunction()
4
5
6? nNum = MyFunction()
7
8? Round(nNum, 0) == Round(MyFunction(), 0)
9
10? Val(Str(nNum)) = Val(Str(MyFunction()))
将 SetFloatDelta() 设置为比之前更高的值也具有相同效果:
1SetFloatDelta(0.1)
2? nNum == MyFunction()
当 Decimals 参数 > 0 且 Decimals 参数 > Length-2 时,此函数返回一串星号。
如果数字不适合分配的空间,也会返回一串星号。
示例:
1? Str(9,6,6) => "******"
2? Str(9,6,5) => "******"
3? Str(9,6,4) => "9.0000"
4? Str(9,6,3) => " 9.000"
5? Str(10,6,6) => "******"
6? Str(10,6,5) => "******"
7? Str(10,6,4) => "******"
8? Str(10,6,3) => "10.000"
此示例使用 Str() 创建具有复合键的订单,键由订单号和客户名称组成:
1USE customer NEW
2INDEX ON Str(NumOrders, 9) + Custname TO custord
参见