You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何实现指定规则的小数取整?{$var|round:0}输出不符合预期

解决方案:实现截断小数的取整(而非四舍五入)

嘿,我懂你的痛点——默认的round:0是按四舍五入规则处理的,所以49.555这类中间值会被进位成50,但你想要的是直接舍弃所有小数部分,只保留整数位,不管小数部分多大都不进位对吧?

这里有两个简单的Smarty内置过滤器可以满足你的需求:

1. 使用floor过滤器(推荐,适用于正数场景)

floor函数的作用是返回小于等于目标数的最大整数,正好符合你要的“向下取整到整数”效果。把原来的代码替换成:

{$var|floor}

测试你的三个输入值:

  • 输入49.155 → 输出49
  • 输入49.555 → 输出49
  • 输入49.955 → 输出49

2. 使用intval过滤器(适用于需要截断正负小数的场景)

如果你的业务场景可能涉及负数,且需要不管正负都直接截断小数(比如-49.1要得到-49而不是-50),可以用intval过滤器:

{$var|intval}

这个函数会直接取数值的整数部分,舍弃所有小数位,对正数的效果和floor一致,对负数则是向上截断。

根据你的示例输入都是正数,用floor就完全能达到期望的输出啦。

内容的提问来源于stack exchange,提问作者Jannat Pia

火山引擎 最新活动