# Windows/.NET 专属函数

文档类型：函数事实页
是否可直接用于生成代码：是；本页函数只按 Windows/.NET/COM 环境生成调用
遇到不确定时：先回到 [../index.md](../index.md) 重新确认平台；目标不是 Windows/.NET/COM 环境时再改查 [base.md](base.md)、[system.md](system.md) 或 [platform.md](platform.md)

这一页只列出 Windows/.NET/COM 专属函数。非 Windows/.NET/COM 环境不要从本页生成调用。

## 模块范围

- 说明：Windows/.NET/COM 专属函数；包含 .NET 环境辅助函数和 Windows COM/OLE 函数
- 函数事实数：12

## 基础函数

### `floatN(value, digits)`

用途：将浮点数按指定小数位数四舍五入。

参数个数：2
返回值：数值

| 参数位置 | 参数名   | 必填 | 接收类型 | 说明           |
| -------- | -------- | ---- | -------- | -------------- |
| 1        | `value`  | 是   | 实数     | 输入数值       |
| 2        | `digits` | 是   | 整数     | 保留的小数位数 |

### `floatToStrEx(value, digits)`

用途：将浮点数格式化为字符串，保留指定小数位数。

参数个数：2
返回值：字符串

| 参数位置 | 参数名   | 必填 | 接收类型 | 说明           |
| -------- | -------- | ---- | -------- | -------------- |
| 1        | `value`  | 是   | 实数     | 输入数值       |
| 2        | `digits` | 是   | 整数     | 保留的小数位数 |

### `formatFloatExt(value[, format])`

用途：按扩展格式输出数值字符串，支持千分位与空值处理。

参数个数：1 到 2
返回值：字符串

| 参数位置 | 参数名   | 必填 | 接收类型    | 说明                             |
| -------- | -------- | ---- | ----------- | -------------------------------- |
| 1        | `value`  | 是   | 数值/字符串 | 输入数值；源文档示例也传入字符串 |
| 2        | `format` | 否   | 整数        | 格式参数（可选）                 |

### `webZero(value)`

用途：当数值为 0 时返回空字符串，否则返回数值字符串。

参数个数：1
返回值：字符串

| 参数位置 | 参数名  | 必填 | 接收类型 | 说明     |
| -------- | ------- | ---- | -------- | -------- |
| 1        | `value` | 是   | 数值     | 输入数值 |

### `roundTo5(value)`

用途：将数值按 0.5 的步长进行四舍五入。

参数个数：1
返回值：数值

| 参数位置 | 参数名  | 必填 | 接收类型 | 说明     |
| -------- | ------- | ---- | -------- | -------- |
| 1        | `value` | 是   | 数值     | 输入数值 |

### `simpleRoundTo2(value, digits)`

用途：按指定小数位数进行四舍五入（对负数同样生效）。

参数个数：2
返回值：数值

| 参数位置 | 参数名   | 必填 | 接收类型 | 说明           |
| -------- | -------- | ---- | -------- | -------------- |
| 1        | `value`  | 是   | 数值     | 输入数值       |
| 2        | `digits` | 是   | 整数     | 保留的小数位数 |

### `divValue(v1, v2)`

用途：当除数不为 0 时返回 `v1 / v2`，否则返回 `0`。

参数个数：2
返回值：数值

| 参数位置 | 参数名 | 必填 | 接收类型 | 说明   |
| -------- | ------ | ---- | -------- | ------ |
| 1        | `v1`   | 是   | 数值     | 被除数 |
| 2        | `v2`   | 是   | 数值     | 除数   |

### `dataisequal(a, b)`

用途：判断两个数据是否相等。

参数个数：2
返回值：布尔值

| 参数位置 | 参数名 | 必填 | 接收类型 | 说明       |
| -------- | ------ | ---- | -------- | ---------- |
| 1        | `a`    | 是   | 任意值   | 待比较数据 |
| 2        | `b`    | 是   | 任意值   | 待比较数据 |

## 系统相关函数

### `getOleObject(prog_id, flags, out_obj)`

用途：获取已注册的 OLE/COM 对象实例（仅 Windows）。

参数个数：3
返回值：是否获取成功（1/0）

| 参数位置 | 参数名    | 必填 | 接收类型 | 说明                                |
| -------- | --------- | ---- | -------- | ----------------------------------- |
| 1        | `prog_id` | 是   | 字符串   | COM ProgID（如 `Word.Application`） |
| 2        | `flags`   | 是   | 整数     | 选项标记（可选，通常为 `0`）        |
| 3        | `out_obj` | 是   | 任意值   | 输出对象变量                        |

### `createComObject(guid_or_prog_id, out_obj)`

用途：创建 Windows COM 对象实例（仅 Windows COM 环境）。

参数个数：2
返回值：是否创建成功（1/0）

| 参数位置 | 参数名            | 必填 | 接收类型 | 说明                                                                                               |
| -------- | ----------------- | ---- | -------- | -------------------------------------------------------------------------------------------------- |
| 1        | `guid_or_prog_id` | 是   | 字符串   | COM ProgID 或带花括号的 CLSID；例如 `Word.Application` 或 `{000209FF-0000-0000-C000-000000000046}` |
| 2        | `out_obj`         | 是   | 任意值   | 输出对象变量；调用前通常先设为 `nil`                                                               |

生成规则：

- 函数名使用 `CreateComObject`；不要写成 `CreateComObj`。
- 必须使用双参数形式，把 COM 对象写入第二个输出变量；不要生成单参调用。
- 仅在 Windows COM 环境生成；目标机器必须安装并注册对应 COM 组件，位数、权限和 Office 自动化环境必须匹配。
- 如果创建的是 Word COM 对象，用完后按对象能力调用 `obj.Quit()`，避免留下隐藏的 `WINWORD.EXE`。
- `guid_or_prog_id` 可传 ProgID，也可传带花括号 CLSID；不要传不带花括号的裸 CLSID 字符串。

### `ifThen3(left, right, greater_value, equal_value, less_value)`

用途：比较两个值，返回大/等/小对应结果。

参数个数：5
返回值：对应比较结果的值

| 参数位置 | 参数名          | 必填 | 接收类型 | 说明                  |
| -------- | --------------- | ---- | -------- | --------------------- |
| 1        | `left`          | 是   | 任意值   | 左值                  |
| 2        | `right`         | 是   | 任意值   | 右值                  |
| 3        | `greater_value` | 是   | 任意值   | `left > right` 时返回 |
| 4        | `equal_value`   | 是   | 任意值   | `left = right` 时返回 |
| 5        | `less_value`    | 是   | 任意值   | `left < right` 时返回 |

### `safeEval(expr)`

用途：安全执行表达式或表达式字符串，执行失败返回 nil。

参数个数：1
返回值：表达式结果或 nil

| 参数位置 | 参数名 | 必填 | 接收类型 | 说明                           |
| -------- | ------ | ---- | -------- | ------------------------------ |
| 1        | `expr` | 是   | 字符串   | 表达式（@）或表达式字符串（&） |
