freemarker 數字格式化深入理解

2022-09-21 23:24:12 字數 3066 閱讀 2287

一、使用內建函式c

特點:

不管其表現形式是怎樣的(例如"123,456.123,456"、"123456.123456"、"000123456.123456000"、"123,456.123456"、"1,2345,6.123456"),只要小數分割符是'.'它就能轉化成計算機能夠識別的字串形式,而且都是123456.123456,計算機處理的時候是沒有那些所謂的千位分隔符的(空格或逗號),而且計算機支援的最大的小數點後面的位數是16位,目前來說,已經夠我們用了。

用法:

假設strmun是乙個字串形式的數字,則可以這樣寫$,例如$值為123456.123456

可能用處:

對一些表單允許使用者按照個人習慣輸入數字,提交的時候統一轉換

二、使用預定義的數字格式

有四種預定義的數字格式,分別是computer(跟內建函式c功能一樣,用法不一樣)、currency(貨幣格式)、number(數字格式)、percent(百分比形式)

特點:

這些格式的zjwocqgs明確含義是本地化(國家)指定的,受j**a平台安裝環境所控制,而不是freemarker,所以不建議用這些函式,而且受預設數字格式的影響,用法不靈活。

三、使用類似於j**a中數字格式語法形式

特點:

例如"0.#",左邊的'0'的個數代表整數部分最少為多少位,右邊'#"的個數代表小數部分最多為多少位;例如",##0.0#"表示整數部分的千位分割符是',',小數部分最多保留兩位,最少保留一位;例如"0.##%"以百分比的形式表示,小數部分最多兩位。

用法:

假設strnum是乙個數字,則可以這樣寫$,例如$值為123,456.12

注意:

數字格式是本地化敏感的,不過我們一般都會給freemarker設定預設的本地化語言,問題不大。

可能用處:

當在某乙個地方突然要用到數字格式時,呼叫string函式是可以的,當在很多地方都需要用到數字格式是,這樣處理太麻煩了,可以考慮設定預設的數字格式化形式

四、區域性設定

特點:

如果在某個頁面,或者某幾個頁面(其它頁面可impowww.cppcns.comrt進來),用到的數字格式化是相同的,可考慮統一配置數字的格式化形式

用法:

只需在用到需要格式化的數字之前設定就可以了,格式如下:其中",##0.##"的內容是採用類似於j**a中數字格式的語法形式,也就是以上的第三點。

注意:

如果用在乙個頁面,則整個頁面預設就是那種格式,除非用string函式覆蓋了預設的格式,同樣的,如果放在乙個公共的頁面,其它頁面只要include它,也會是同樣的格式。

五、全域性設定

特點:

在所有的頁面都預設提供數字的格式化形式

用法 (針對spring):在freemarker的配置檔案中設定其預設的數字格式化形式,如下:

複製** **如下:

.....

0.##&程式設計客棧lt;/prop>

......

六、捨入處理

有幾種捨入處理方式,分別是 round,floor,ceiling 和string("0")

特點:

前面三種,從字面上很好理解,我們也經常使用,要說的最後一種,先看乙個例子1.5?string("0")和2.5?string("0") 的值都是2 說明如下:

在金融和統計學中,四捨五入都是根據所謂的一半原則,這就意味著對最近的「鄰居」進行四捨五入,除非離兩個鄰居距離相等,這種情況下,它四捨五入到偶數的鄰居。如果你注意看 1.5 和 2.5 的四捨五入的話,這在上面的示例中是可以看到的,兩個都被四捨五入到2,因為 2 是偶數,但 1 和 3 是奇數。

用法:假設strnum是乙個數字,則可以這樣寫$ 或者$

可能用法:

可用在一些對數字精確度不高的情況(分頁處理時也許有用),一些對小數敏感的,還是用 string函式

例如:

複製** **如下: $

如果小數點後不足兩位,用 0 代替

複製** **如下: $

如果小數點後多餘兩位,就只保留兩位,否則輸出實際值

輸出為:1239765.46

複製** **如下: $

輸出為:1,239,765.46

整數部分每三位用 , 分割,並且保證小數點後保留兩位,不足用 0 代替

複製** **如下: $

輸出為:1,239,765.46

整數部分每三位用 , 分割,並且小數點後多餘兩位就只保留兩位,不足兩位就取實際位數,可以不不包含小數點

複製** **如下: $

輸出為:012.70

整數部分如果不足三位(000),前面用0補齊,否則取實際的整數字

複製** **如下: $

等價於

複製** **如下: $

輸出為:12.70

freemarker數字格式化帶來的操作問題

freemarker在解析資料格式的時候,自動預設將數字按3為分割(1,000),這個問題給操作帶來一定的額外處理複雜度,解決方法有如下幾種:

1、在模板中直接加.tostring()轉化數字為字串,如:

複製** **如下:

$; 2、在freemarker配置檔案freemarker.properties加

複製** **如下:

或者 ;

3、在模板中直接加zjwocqgsng number_format="#">或者,如:複製** **如下:

adminlanguagepaginationmsg?exists>

對於數字的格式化,可採用strng 和number_format 設定

數字格式化的優先順序: string優先順序最高,配置檔案配置的優先順序最低,在頁面setting的優先順序在兩者之間。

七、總結

對於數字的格式化,可採用strng和number_format設定

數字格式化的優先順序:string優先順序最高,配置檔案配置的優先順序最低,在頁面setting的優先順序在兩者之間。

本文標題: freemarker 數字格式化深入理解

本文位址: /wangluo/jsp/90373.html

freemarker 數字格式化

freemarker數字格式化可以在兩個地方設定,乙個是全域性的,即在freemarker.properties檔案中設定number format,還有乙個是使用string指令來控制資料的輸出格式。例如 全域性設定詳情請看另一篇部落格 如果小數點後不足兩位,用 0 代替 如果小數點後多餘兩位,就...

freemarker數字格式化

freemarker在解析資料格式的時候,自動預設將數字按3為分割 1,000 這個問題給操作帶來一定的額外處理複雜度,解決方法有如下幾種 1 在模板中直接加.tostring 轉化數字為字串,如 2 在freemarker配置檔案freemarker.properties加number forma...

Freemarker 數字格式化

freemarker在解析資料格式的時候,自動預設將數字按3為分割 1,000 這會給開發帶來一些問題,比如通過url傳參,就會報錯 1,000 解決的辦法 1 使用內建函式c,比如 可以避免數字被格式化。缺點 在所有需要傳參的地方都要處理。全域性的處理方法 2 在freemarker配置檔案fre...