# `naisi_decimal_is_valid`

验证 ASCII 十进制文本及最大小数位数，不转换数值或限制业务金额范围。

必须有整数部分，允许前导零；有小数点时后面必须有数字。不 trim、不舍入，
拒绝正号、指数、空白、空串、NUL 和非 ASCII 数字。需要本请求已有有效许可证明。

## 函数签名

```php
function naisi_decimal_is_valid(string $value, int $max_decimal_places = 2, bool $allow_negative = false): bool
```

## 调用前提

应用入口先调用 [naisi_is_ext_license_valid](/web/developers/naisilib/naisi-is-ext-license-valid) 并确认返回 `true`。只验证同一请求内已有的有效 FULL/BASIC 证明；没有证明或证明失效时立即返回失败值，不现场补做完整校验。

授权类别：`LICENSE`；执行模式：`PROOF`。需要 DATA capability；格式校验不代替登录或业务权限检查。

## 参数

### `$value`

- 类型：`string`
- 必填：是
- 默认值：无
- 方向：输入参数。

十进制文本，例如 0001.20；整数部分长度不限。

### `$max_decimal_places`

- 类型：`int`
- 必填：否
- 默认值：`2`
- 方向：输入参数。

最大小数位数，默认 2；0 仅允许整数，负数无效。

### `$allow_negative`

- 类型：`bool`
- 必填：否
- 默认值：`false`
- 方向：输入参数。

是否允许前置负号，默认 false；开启后包括 -0、-0.00。

## 返回值

类型：`bool`

格式及精度均符合要求时返回 true；未授权、参数无效或验证失败返回 false。

## 调用示例

当前请求须先完成许可验证，以下成功结果以授权通过为前提。

```php
var_dump(naisi_decimal_is_valid('0001.20')); // true
var_dump(naisi_decimal_is_valid('-0', 0, true)); // true
var_dump(naisi_decimal_is_valid('1.234')); // false
```

## 版本信息

- 实现模块：`validation`
- 授权类别：`LICENSE` / `PROOF`
- 失败回退：`false`
- 文档同步：`2026-10-18`
