前言

我们都知道,在我们套页面的时候一定要注意的一点就是数字的展示,因为稍有不慎,你的页面上就可能出现0.60000000001这种的数字,如果是价格的话,那还真的是比较的尴尬!因此在我们的代码层面我们是一定需要做好相关的数字格式化的准备的,当然,这并不意味这在前端页面上我们就可以不做任何事情!毕竟双重保险来的更加妥当一些。


数字格式化


string (when used with a numerical value)
        Converts a number to a string. In its simplest form (expression?string) it uses the default format that the programmer has specified via the number_format and the locale configuration settings. You can also specify a number format explicitly with this built-in, as it will be shown later.
        There are four predefined number formats: computer, currency, number, and percent. The exact meaning of these is locale (nationality) specific, and is controlled by the Java platform installation, not by FreeMarker, except for computer, which uses the same formatting as the c built-in. There can also be programmer-defined formats, whose name starts with @ (programmers see more here…).

这是其官网上给出的一段关于数字类型如何转为string字符串然后予以显示的答案。大意是说如果我们遇到了数字值,最好是利用其提供的方式转化为相应的字符串。下面我们来具体的看几个例子!


1、货币展示

实际上我们在日常的开发过程中遇到的比较多的问题就是货币的展示,对于货币而言,在不同的地区是有不同的符号的。因此,freemarker为我们提供了方便的方式实现。

<#assign x=42>
${x?string.currency}

上述的表达式最终的结果将是¥42.00,这个功能看起来很不错!

2、百分数展示

百分数也是我们在日常的开发过程中遇到的比较多的问题,其展示的方案如下。当然变量我们依旧使用上面的变量。

${x?string.percent}

其最终的结果将是4,200%,看上去不赖!

3、数字格式化

上面所说的例子是比较典型的数字展示的例子,下面所说的就是数字的格式化,其实如果数据来源于我们的接口还好,如果是来自第三方或者外部平台的接口,那可真的是一定要小心。稍不留神,就可能闹出大笑话!
        下面的话,我首先列举出一些例子,大家猜猜最终的格式化结果!

<#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"]}

下面就是揭晓答案的时候,不知道各位看官猜的准不准呢!

1
1.2
1.23
1.234
1.234001.00
012.10
123.461
2
2 <-- 1.5, rounded towards even neighbor
2 <-- 2.5, rounded towards even neighbor1.23E4

大家可以看到这里的话主要分为三类,第一类就是规定后面的小数位数,当然在这种情况下如果后面不足规定的位数是不会自动补齐的。
第二类就是不仅规定了小数的位数,还在位数不足规定位数的时候自动补齐。
最后就是四舍五入的相关规则。当然还有科学计数法的实现!

总结


如上我们总结了在日常的开发中比较常见的一些Freemarker的数字表示及格式化的相关问题。这个对于我们来说其实还是蛮重要的!实际上我是参考了人家的官方文档!地址如下,大家有兴趣的可以去看看原文!

freemarker官方文档地址

Freemarker数字格式化总结相关推荐

  1. freemarker 字符串格式化

    数字格式化 ${num?string('0.00')} 如果小数点后不足两位,用 0 代替${num?string('#.##')} 如果小数点后多余两位,就只保留两位,否则输出实际值 输出为:123 ...

  2. FreeMarker 数字格式处理

    给大家推荐个靠谱的公众号程序员探索之路,大家一起加油 freemarker 数字格式的处理 一.使用内建函数 c 特点: 不管其表现形式是怎样的(例如"123,456.123,456&quo ...

  3. C#:String.Format数字格式化输出

    C#:String.Format数字格式化输出 int a = 12345678;    //格式为sring输出 //   Label1.Text = string.Format("asd ...

  4. 简单介绍python format格式化和数字格式化

    这篇文章主要介绍了python format格式化和数字格式化,格式化字符串的函数 str.format(),它增强了字符串格式化的功能,基本语法是通过{} 和 : 来代替以前的 % ,下面内容介绍, ...

  5. 为解决Thymeleaf数字格式化问题而想到的几种方案

    为解决Thymeleaf数字格式化问题而想到的几种方案 参考文章: (1)为解决Thymeleaf数字格式化问题而想到的几种方案 (2)https://www.cnblogs.com/jizhong/ ...

  6. Java基础(三十五)Math、Random类和数字格式化(String.format方法)

    一.Math类 Math类常用的方法: public static long abs (double a) 返回a的绝对值 public static double max (double a,dou ...

  7. 使用 .toLocaleString() 轻松实现多国语言价格数字格式化

    用代码对数字进行格式化,显然不是逢三位加逗号这么简单.比如印度在数字分位符号上的处理,就堪称业界奇葩: 印度的数字读法用"拉克"(十万)和"克若尔"(千万),数 ...

  8. java数字格式化_Java数字格式

    java数字格式化 当我看到其他人编写不必要的Java代码并且由于缺乏对已经提供所需功能的JDK类的了解而编写了不必要的Java代码时,我会想到很多次. 这样的一个例子是时间相关的常量的使用硬编码值的 ...

  9. JAVA进阶教学之(数字格式化和高精度数字)

    数字的格式化方便我们对于统计数字的时候便于区分 代码演示: new DecimalFormat("###,###.##"); package com.lbj.javase.numb ...

  10. (转)数字格式化函数:Highcharts.numberFormat()

    一.函数说明 该函数用于图表中数值的格式化,常见用途有数值精度控制.小数点符.千位符显示控制等. 二.函数使用 1.函数构造及参数 Highcharts.numberFormat (Number nu ...

最新文章

  1. php更新用户数据为空,php – Instagram实时更新标签 – 获取空数据,为什么?
  2. WEB前端性能优化小结
  3. [转]解决linux下sqldeveloper 中文环境显示乱码的问题
  4. SQL Server 堆heap 非聚集索引 Nonclustered index 行号键查找RID loopup结合执行计划过程详解
  5. gitlab+svn自动增量发包
  6. SAP Spartacus ProductOccModule
  7. 再见 XShell 和 ITerm 2,是时候拥抱全平台高颜值终端工具 Hyper 了!
  8. iframe的onload在Chrome/Opera中执行两次Bug
  9. cloudera search1.0.0环境搭建(2):利用flume-ng的MorphlineSolrSink实现近实时(NRT)搜索
  10. Android网络收集和ping封装库
  11. CAD中PDF转DWG
  12. PyTorch中的pack_padded_sequence和pad_packed_sequence
  13. Java征兵系统(可拓展)
  14. 我的世界服务器创世神文件夹,我的世界服务器怎么给创世神权限的指令
  15. 【TypeScript】必学基础
  16. 如何在jsp里面写java代码
  17. android ViewFlipper屏幕切换
  18. Windows开启telnet功能
  19. scp 返回 protocol error: unexpected newline
  20. HM10.1码率控制模块代码详解(1)---------序列级码率控制类TEncRCSeq介绍

热门文章

  1. vsCode的使用过程中遇到的问题?
  2. java判断小数位数_java-使用BigDecimal确定小数位数
  3. IE浏览器无法打开网页
  4. FPGA实战篇——【2】按键控制LED灯闪烁
  5. 国内6大常见免费数据采集器特点分析
  6. [原创]和Taskmgr过不去篇(无厘头版)
  7. java this逃逸_java this引用逃逸详解
  8. linux应用层读写event,Linux应用层获取鼠标坐标
  9. 文件共享服务器(CIFS协议)
  10. 9:用户和权限-步入Linux的现代方法