#{...}: 数字插值

已经被废弃了:使用 number_format 设置项the string 内建函数 来代替。对于计算机使用 (也就非本地的格式化)的格式化,使用 c 内建函数 (比如 number?c)。

概要

#{expression}#{expression; format}

这里:

  • expression: 可以算作是数字的表达式
  • format: 可选的格式说明符

描述

数字插值被用来输出数值。如果表达式不能算成数字, 那么计算过程就会以抛出错误而终止。

可选的格式说明符指定了使用 mminMmax 语法显示的小数位数的最小和最大值。比如,m2M5 表示"最少两位,最多5位小数位"。最小值和最大值说明符部分可以被忽略。 如果仅指定最小值,那么最大值和最小值相等。如果仅指定最大值,那么最小值是0。

输出的小数点字符是国际化的(根据当前本地设置),这表示它可能不是一个点。

不像 ${...}, #{...} 忽略 number_format 设置项。实际上这是向后兼容的一个怪点,但是当你在如 <a href="quertyDatabase?id=#{id}"> 这些情况打印数字时它可能是有用的,这里你肯定不想分组分隔符或像那些幻想的东西。 然而,从 FreeMarker 2.3.3 版本开始,而使用 ?c 内建函数 来达到这个目的, 比如 <a href="quertyDatabase?id=${id?c}">

比如。假设 x2.582y4

           <#-- If the language is US English the output is: -->
#{x}       <#-- 2.582 -->
#{y}       <#-- 4 -->
#{x; M2}   <#-- 2.58 -->
#{y; M2}   <#-- 4    -->
#{x; m1}   <#-- 2.6 -->
#{y; m1}   <#-- 4.0 -->
#{x; m1M2} <#-- 2.58 -->
#{y; m1M2} <#-- 4.0  -->