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

Freemarker字符串转数字不四舍五入并取绝对值问题求助

Freemarker字符串转数字保留精度并取绝对值解决方案

核心问题出在?number内置函数——它会按照Freemarker默认的数值格式规则自动四舍五入,导致原始小数精度丢失。改用?big_decimal转换可以完美保留字符串的精确数值,再进行后续的绝对值处理。

修改后的代码如下:

<#if a.value?is_string>
    <#assign num = a.value?big_decimal>
    <#if num < 0>
        "aValue": "${num?abs}"
    <#else>
        "aValue": "${a.value}"
    </#if>
</#if>

关键说明:

  • ?big_decimal:将字符串转换为BigDecimal类型,完全保留原始数值的所有小数位,不会触发任何自动四舍五入操作。
  • 先赋值给变量num:避免重复执行字符串转数值操作,提升模板执行效率。
  • 正负判断与绝对值处理:基于精确的BigDecimal数值判断正负,负数调用?abs获取绝对值后输出,正数直接输出原字符串(也可以用num输出,结果一致)。

内容的提问来源于stack exchange,提问作者Amila Fonseka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:35:40