- 浏览: 433020 次
- 性别:
- 来自: 无锡
文章分类
最新评论
-
belonghu:
这还和字段是否主键,加索引,有很大关系,我对一个索引的字段查询 ...
MYSQL每日一用:SELECT 语句中比对(between and \ like \ left) -
lqingqingzijin:
好,就是想知道怎样将默认bash修改成nologin
我怎么创建和修改用户帐号,让它有一个nologin shell? -
yangxiutian:
“在jar中添加了字体”是什么意思?
java.util.zip.ZipInputStream.getUTF8String(ZipInputStream.java:299) -
ljhard_1030:
楼主学习了,以后继续发表这类的文章,会继续光临的。。
刨根问底(Proxool连接池设置) -
RobustTm:
Selenium中使用的貌似是Junit 3.x,上面的例子也 ...
使用Selenium 和Junit 进行WEB功能测试
在开发中很容易忽视一点,输入一个值(可能是小数),输出时如果不做处理,就很容易出现
隐形的BUG。比如,如果从数据库取出一个0.22的数值,一般的输出${x?if_exists?html},
这时是显示0,而不是0.22。
应该写成${x?if_exists?string.number} 或者 ${x?if_exists.toString()?html}
下面就是关于数字的具体介绍:
Built-ins for numbers
Related FAQs: Do you have things like 1,000,000 or 1 000 000 instead of 1000000, or something like 3.14 instead of 3,14 or vice versa? See this and this FAQ entry, also note the c built-in above.
c
Note
This built-in exists since FreeMarker 2.3.3.
This built-in converts a number to string for ``computer audience'' as opposed to human audience. That is, it formats with the rules that programming languages used to use, which is independent of all the locale and number format settings of FreeMarker. It always uses dot as decimal separator, and it never uses grouping separators (like 3,000,000), nor exponential form (like 5E20), nor superfluous leading or trailing 0-s (like 03 or 1.0), nor + sign (like +1). It will print at most 16 digits after the decimal dot, and thus numbers whose absolute value is less than 1E-16 will be shown as 0. This built-in is crucial because be default (like with ${x}) numbers are converted to strings with the locale (language, country) specific number formatting, which is for human readers (like 300000 is possibly printed as 3,000,000). When the number is printed not for human audience (e.g., for a database record ID used as the part of an URL, or as invisible field value in a HTML form, or for printing CSS/JavaScript numerical literals) this built-in must be used to print the number (i.e., use ${x?c} instead of ${x}), or else the output will be possibly broken depending on the current number formatting settings and locale (like the decimal point is not dot, but comma in many countries) and the value of the number (like big numbers are possibly ``damaged'' by grouping separators).
string (when used with a numerical value)
Converts a number to a string. It uses the default format that the programmer has specified. You can also specify a number format explicitly with this built-in, as it will be shown later.
There are three predefined number formats: number, currency, and percent. The exact meaning of these is locale (nationality) specific, and is controlled by the Java platform installation, rather than by FreeMarker. You can use these predefined formats like this:
<#assign x=42>
${x}
${x?string} <#-- the same as ${x} -->
${x?string.number}
${x?string.currency}
${x?string.percent}
If your locale is US English, this will certainly produce:
42
42
42
$42.00
4,200%
The output of first three expressions is identical because the first two expressions use the default format, which is "number" here. You can change this default using a setting:
<#setting number_format="currency">
<#assign x=42>
${x}
${x?string} <#-- the same as ${x} -->
${x?string.number}
${x?string.currency}
${x?string.percent}
Will now output:
$42.00
$42.00
42
$42.00
4,200%
since the default number format was set to "currency".
Beside the three predefined formats, you can use arbitrary number format patterns written in Java decimal number format syntax:
<#assign x = 1.234>
${x?string("0")}
${x?string("0.#")}
${x?string("0.##")}
${x?string("0.###")}
${x?string("0.####")}
${1?string("000.00")}
${12.1?string("000.00")}
${123.456?string("000.00")}
${1.2?string("0")}
${1.8?string("0")}
${1.5?string("0")} <-- 1.5, rounded towards even neighbor
${2.5?string("0")} <-- 2.5, rounded towards even neighbor
${12345?string("0.##E0")}
outputs this:
1
1.2
1.23
1.234
1.234
001.00
012.10
123.46
1
2
2 <-- 1.5, rounded towards even neighbor
2 <-- 2.5, rounded towards even neighbor
1.23E4
Following the financial and statistics practice, the rounding goes according the so called half-even rule, which means rounding towards the nearest ``neighbor'', unless both neighbors are equidistant, in which case, it rounds towards the even neighbor. This was visible in the above example if you look at the rounding of 1.5 and of 2.5, as both were rounded to 2, since 2 is even, but 1 and 3 are odds.
Appart from the Java decimal syntax patterns, you can also write ${aNumber?string("currency")} and like, that will do the same as ${aNumber?string.currency} and like.
As it was shown for the predefined formats earlier, the default formatting of the numbers can be set in the template:
<#setting number_format="0.##">
${1.234}
outputs this:
1.23
Note that the number formatting is locale sensitive:
<#setting locale="en_US">
US people write: ${12345678?string(",##0.00")}
<#setting locale="hu">
Hungarian people write: ${12345678?string(",##0.00")}
outputs this:
US people write: 12,345,678.00
Hungarian people write: 12 345 678,00
You can find information about the formatting of dates here.
round, floor, ceiling
Note
The rounding built-ins exist since FreeMarker 2.3.13.
Converts a number to a whole number using the specified rounding rule:
*
round: Rounds to the nearest whole number. If the number ends with .5, then it rounds upwards (i.e., towards positive infinity)
*
floor: Rounds the number downwards (i.e., towards neagative infinity)
*
ceiling: Rounds the number upwards (i.e., towards positive infinity)
Example:
<#assign testlist=[
0, 1, -1, 0.5, 1.5, -0.5,
-1.5, 0.25, -0.25, 1.75, -1.75]>
<#list testlist as result>
${result} ?floor=${result?floor} ?ceiling=${result?ceiling} ?round=${result?round}
</#list>
Prints:
0 ?floor=0 ?ceiling=0 ?round=0
1 ?floor=1 ?ceiling=1 ?round=1
-1 ?floor=-1 ?ceiling=-1 ?round=-1
0.5 ?floor=0 ?ceiling=1 ?round=1
1.5 ?floor=1 ?ceiling=2 ?round=2
-0.5 ?floor=-1 ?ceiling=0 ?round=0
-1.5 ?floor=-2 ?ceiling=-1 ?round=-1
0.25 ?floor=0 ?ceiling=1 ?round=0
-0.25 ?floor=-1 ?ceiling=0 ?round=0
1.75 ?floor=1 ?ceiling=2 ?round=2
-1.75 ?floor=-2 ?ceiling=-1 ?round=-2
These built-ins may be useful in pagination operations and like. If you just want to display numbers in rounded form, then you should rather use the string built-in or the number_format setting.
也可以直接看原文:
http://freemarker.org/docs/ref_builtins_number.html#ref_builtin_string_for_number
隐形的BUG。比如,如果从数据库取出一个0.22的数值,一般的输出${x?if_exists?html},
这时是显示0,而不是0.22。
应该写成${x?if_exists?string.number} 或者 ${x?if_exists.toString()?html}
下面就是关于数字的具体介绍:
Built-ins for numbers
Related FAQs: Do you have things like 1,000,000 or 1 000 000 instead of 1000000, or something like 3.14 instead of 3,14 or vice versa? See this and this FAQ entry, also note the c built-in above.
c
Note
This built-in exists since FreeMarker 2.3.3.
This built-in converts a number to string for ``computer audience'' as opposed to human audience. That is, it formats with the rules that programming languages used to use, which is independent of all the locale and number format settings of FreeMarker. It always uses dot as decimal separator, and it never uses grouping separators (like 3,000,000), nor exponential form (like 5E20), nor superfluous leading or trailing 0-s (like 03 or 1.0), nor + sign (like +1). It will print at most 16 digits after the decimal dot, and thus numbers whose absolute value is less than 1E-16 will be shown as 0. This built-in is crucial because be default (like with ${x}) numbers are converted to strings with the locale (language, country) specific number formatting, which is for human readers (like 300000 is possibly printed as 3,000,000). When the number is printed not for human audience (e.g., for a database record ID used as the part of an URL, or as invisible field value in a HTML form, or for printing CSS/JavaScript numerical literals) this built-in must be used to print the number (i.e., use ${x?c} instead of ${x}), or else the output will be possibly broken depending on the current number formatting settings and locale (like the decimal point is not dot, but comma in many countries) and the value of the number (like big numbers are possibly ``damaged'' by grouping separators).
string (when used with a numerical value)
Converts a number to a string. It uses the default format that the programmer has specified. You can also specify a number format explicitly with this built-in, as it will be shown later.
There are three predefined number formats: number, currency, and percent. The exact meaning of these is locale (nationality) specific, and is controlled by the Java platform installation, rather than by FreeMarker. You can use these predefined formats like this:
<#assign x=42>
${x}
${x?string} <#-- the same as ${x} -->
${x?string.number}
${x?string.currency}
${x?string.percent}
If your locale is US English, this will certainly produce:
42
42
42
$42.00
4,200%
The output of first three expressions is identical because the first two expressions use the default format, which is "number" here. You can change this default using a setting:
<#setting number_format="currency">
<#assign x=42>
${x}
${x?string} <#-- the same as ${x} -->
${x?string.number}
${x?string.currency}
${x?string.percent}
Will now output:
$42.00
$42.00
42
$42.00
4,200%
since the default number format was set to "currency".
Beside the three predefined formats, you can use arbitrary number format patterns written in Java decimal number format syntax:
<#assign x = 1.234>
${x?string("0")}
${x?string("0.#")}
${x?string("0.##")}
${x?string("0.###")}
${x?string("0.####")}
${1?string("000.00")}
${12.1?string("000.00")}
${123.456?string("000.00")}
${1.2?string("0")}
${1.8?string("0")}
${1.5?string("0")} <-- 1.5, rounded towards even neighbor
${2.5?string("0")} <-- 2.5, rounded towards even neighbor
${12345?string("0.##E0")}
outputs this:
1
1.2
1.23
1.234
1.234
001.00
012.10
123.46
1
2
2 <-- 1.5, rounded towards even neighbor
2 <-- 2.5, rounded towards even neighbor
1.23E4
Following the financial and statistics practice, the rounding goes according the so called half-even rule, which means rounding towards the nearest ``neighbor'', unless both neighbors are equidistant, in which case, it rounds towards the even neighbor. This was visible in the above example if you look at the rounding of 1.5 and of 2.5, as both were rounded to 2, since 2 is even, but 1 and 3 are odds.
Appart from the Java decimal syntax patterns, you can also write ${aNumber?string("currency")} and like, that will do the same as ${aNumber?string.currency} and like.
As it was shown for the predefined formats earlier, the default formatting of the numbers can be set in the template:
<#setting number_format="0.##">
${1.234}
outputs this:
1.23
Note that the number formatting is locale sensitive:
<#setting locale="en_US">
US people write: ${12345678?string(",##0.00")}
<#setting locale="hu">
Hungarian people write: ${12345678?string(",##0.00")}
outputs this:
US people write: 12,345,678.00
Hungarian people write: 12 345 678,00
You can find information about the formatting of dates here.
round, floor, ceiling
Note
The rounding built-ins exist since FreeMarker 2.3.13.
Converts a number to a whole number using the specified rounding rule:
*
round: Rounds to the nearest whole number. If the number ends with .5, then it rounds upwards (i.e., towards positive infinity)
*
floor: Rounds the number downwards (i.e., towards neagative infinity)
*
ceiling: Rounds the number upwards (i.e., towards positive infinity)
Example:
<#assign testlist=[
0, 1, -1, 0.5, 1.5, -0.5,
-1.5, 0.25, -0.25, 1.75, -1.75]>
<#list testlist as result>
${result} ?floor=${result?floor} ?ceiling=${result?ceiling} ?round=${result?round}
</#list>
Prints:
0 ?floor=0 ?ceiling=0 ?round=0
1 ?floor=1 ?ceiling=1 ?round=1
-1 ?floor=-1 ?ceiling=-1 ?round=-1
0.5 ?floor=0 ?ceiling=1 ?round=1
1.5 ?floor=1 ?ceiling=2 ?round=2
-0.5 ?floor=-1 ?ceiling=0 ?round=0
-1.5 ?floor=-2 ?ceiling=-1 ?round=-1
0.25 ?floor=0 ?ceiling=1 ?round=0
-0.25 ?floor=-1 ?ceiling=0 ?round=0
1.75 ?floor=1 ?ceiling=2 ?round=2
-1.75 ?floor=-2 ?ceiling=-1 ?round=-2
These built-ins may be useful in pagination operations and like. If you just want to display numbers in rounded form, then you should rather use the string built-in or the number_format setting.
也可以直接看原文:
http://freemarker.org/docs/ref_builtins_number.html#ref_builtin_string_for_number
评论
4 楼
gongstring
2009-06-09
很好,今天正好用上了!谢谢了
3 楼
vaja
2008-11-05
在FTL页一开始写上 <#setting number_format="0.#">
就可以保留一位小数
就可以保留一位小数
2 楼
limeng530_1987
2008-06-26
现在也在学习FREEMARKER
1 楼
flowerdance
2008-06-26
...........好用吗?我怎么觉得怪怪的
发表评论
-
activemq 使用经验
2011-07-19 00:14 6986ActiveMQ 是apache的一个开源JMS服务器, ... -
quartz无法启动的原因
2011-04-21 21:06 3433quartz无法启动的原因 场景:spring集 ... -
使用Selenium 和Junit 进行WEB功能测试
2010-10-12 16:54 17635下载 用firefox 到http://seleni ... -
java反编译工具
2010-07-21 10:56 1129这款反编译器叫 "Java Decompiler ... -
运行一个可执行的Jar时,Classpath的设置无效问题,java的-cp和-jar参数不能
2010-07-12 14:26 3736情况为:在cmd中,运行java -jar *.jar,出现c ... -
实践中整理出tomcat集群和负载均衡
2010-07-09 18:18 956实践中整理出tomcat集群和负载均衡 ... -
linux JAVA环境安装和配置
2010-07-06 11:19 0服务器安装配置: linux创建ftp用户 ... -
tomcat 日志文件catalina按日划分
2010-06-13 13:54 1612#!/bin/bash cd `dirname $0` ... -
java.util.zip.ZipInputStream.getUTF8String(ZipInputStream.java:299)
2010-05-26 22:11 4849在做项目时,老是第一次报一下错误: java.u ... -
URL中中文乱码
2010-05-10 13:28 1122乱码有时候是让我们最头疼,但是根据多年的经验: ... -
解决Linux下Java中文乱码问题
2010-04-13 12:45 21534情况说明: 本地测试数据正常,发布到服务器(centos)后 ... -
正则表达式匹配中文字符,Ctrl+F的福音!
2010-03-23 00:06 1805匹配中文字符的正则表达式: [\u4e00-\u9fa5] ... -
代码严谨度的重要性和耦合的重要性
2010-03-08 17:03 1275情况是:星期六,同时打我电话,说平台动不了,让我解决一下 ... -
测试:strust1.0+jsp做出的系统中出现的串号问题
2010-02-03 10:52 0测试:strust1.0+jsp做出的系统中出现的串号问题 ... -
java 中 List<String> 拆分成 带标记的 List<String>
2009-12-23 15:38 2942public class TransList { ... -
error:SQLServer 2000 Driver for JDBC]Broken pipe
2009-12-21 11:39 2085环境是:linux(red hat) tomcat5.0 j ... -
java或web中解决所有路径问题(最全分析绝对有你要的)
2009-08-25 14:01 1989java或web中解决所有路径 ... -
ibatis 保存修改时都是乱码
2009-07-22 13:21 1884ibatis 保存修改时都是乱码? 这个问题困恼了我好 ... -
AXIS2 学习心得
2009-07-03 17:47 1725首先,想大家介绍一个非常不错的学习axis2的教学网址: ... -
乱码问题——常量提示录——提示Java的编译常量的一个问题
2009-06-04 14:22 1491问题是:有两个JAVA文件,第一个里面放的是常量,第二个 ...
相关推荐
springboot如何使用Freemarker模版引擎
在struts2中使用freemarker模版.doc
1.html模板+model数据,通过freemarker进行渲染,便于维护和修改 2.渲染后的html流,可通过Flying Saucer组件生成pdf文件流,或者生成pdf后再转成jpg文件流
Springboot项目中: 1. 使用Apache POI 3.9 自定义样式导出Excel文件...2. 使用freemarker动态生成word .doc文档(带图片Word以及复杂格式word) 详细说明见个人博客及 github: https://github.com/DuebassLei/excel-poi
使用 Freemarker 模板引擎创建一个简单的 Spring 工程。
Spring配置Freemarker视图解析器,前台页面全部使用freemarker渲染
使用FreeMarker实现到处word实例 。
使用freemarker 导出word供别人下载
freemarker是一个比较好用的java模板引擎,grails也对它有很好的支持,该资源大有用处。
freemarker freemarker freemarker freemarker freemarker freemarker freemarker freemarker
freemarker 教程 使用手册 Freemarker 手册 用于 2.3.16
FreeMarker(使用方法)FreeMarker(使用方法)FreeMarker(使用方法)FreeMarker(使用方法)很好的pdf书
使用struts2的freemarker模板扩展struts标签
FreeMarker使用介绍 FreeMarker使用介绍
jdk1.8下可以使用的freemarker.jar
FreeMarker使用Macro实例,很好的学习资料。
freemarker 中文手册 轻松掌握!!
freemarker常用使用文档......................................................................
FreeMarker,FreeMarker
如果全用不存在的指令,FreeMarker不会使用模板输出,而是产生一个错误消息.FreeMarker会忽略FTL标签中的空白字符.值得注意的是, /> 和指令之间不允许有空白字符. 2, 插值规则 FreeMarker的插值有如下两种类型:1,...