You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中使用Joi验证时如何让point参数支持小数?

如何让Joi的point参数支持小数格式?

嘿,这事儿超简单的!其实你当前的Joi.number()本身就**默认支持小数(浮点数)**啦,不过如果想要更明确地控制小数的规则(比如限制小数位数),可以做这些调整:

情况1:仅需要支持任意小数(无位数限制)

你的原代码其实已经满足需求了,不过如果想更清晰地表明是浮点数,可以加上.float()方法(不加也能正常验证小数,只是语义更明确):

const userSchema = Joi.object({
  point: Joi.number().float().max(150).required(),
});

情况2:需要限制小数位数

如果希望point的小数部分最多有指定位数(比如最多2位小数,像123.45这种),可以用.precision()方法来约束:

const userSchema = Joi.object({
  point: Joi.number().precision(2).max(150).required(),
});

这里的precision(2)表示允许的最大小数位数是2,默认会对多余的小数位做四舍五入处理,你也可以通过额外参数调整这个行为。

小进阶:只允许小数,不接受整数

如果业务上要求point必须是带小数的数值,不能是纯整数,可以这样写:

const userSchema = Joi.object({
  point: Joi.number().float().invalid(Joi.integer()).max(150).required(),
});

这样就能把整数类型的输入直接判定为不合法啦。

内容的提问来源于stack exchange,提问作者Lll ll

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:28:46