一、Java保留2位小數
1
2
|
double acc = 22.4322 ; String accX = String.format( "%.2f" , acc); |
二、freemarker保留兩位小數
1
2
3
4
5
|
<# if centerFreeSize??> ${centerFreeSize?string( "#.##" )} <# else > 0.00 </# if > |
補充:freemarker保留小數
freemarker保留兩位小數
方法一
#{number ;m1M2}
m 最少幾位小數,M最多幾位小數
方法二
${x?string("0.##")}
在開發中很容易忽視一點,輸入一個值(可能是小數),輸出時如果不做處理,就很容易出現
隱形的BUG。比如,如果從數據庫取出一個0.22的數值,一般的輸出${x?if_exists?html}, 這時是顯示0,而不是0.22。
應該寫成${x?if_exists?string.number} 或者 ${x?if_exists.toString()?html}
1, 小于1的數字在freemarker中相減錯誤
2,1000,2000這類的數字在freemarker中的格式錯誤,會被解釋成1,000
解決方法設置number在freemarker的顯示格式
Xml代碼
1
2
3
4
|
< #setting number_format="0.00"> < #assign x="${goodsgroupt.memberprice}"/> < #assign y="${goodsgroupt.groupprice}"/> ${(x?number-y?number)} |
重點就是這個number_format了
網上說讓number_format="0",這樣只能解決第二種情況。
四、局部設置
特點:
如果在某個頁面,或者某幾個頁面(其它頁面可import進來),用到的數字格式化是相同的,可考慮統一配置數字的格式化形式
用法:
只需在用到需要格式化的數字之前 設置就可以了,格式如下: <#setting number_format=",##0.##"> 其中",##0.##"的內容是采用類似于Java中數字格式的語法形式,也就是以上的第三點。
注意:
如果用在一個頁面,則整個頁面默認就是那種格式,除非用string函數覆蓋了默認的格式,同樣的,如果放在一個公共的頁面,其它頁面只要include它,也會是同樣的格式。
五、全局設置
特點:
在所有的頁面都默認提供數字的格式化形式
用法
(針對spring):在freemarker的配置文件中設置其默認的數字格式化形式,如下:
代碼如下
1
2
3
4
5
6
7
|
< property name = "freemarkerSettings" > < props> ..... < prop key = "number_format" > 0. ## </prop > ...... </props> </property> |