如何在现有Freemarker汇率处理代码中将小数位数限制为4位
实现方法
你使用的是FreeMarker模板语法,在原有字符清理逻辑后补充格式化步骤即可实现固定4位小数的需求,以下是两种常用实现方案:
方案1:四舍五入保留4位小数(通用推荐)
直接通过内置数值格式化函数处理,代码如下:${record.exchangerate?string?replace('[^.,0-9]','','r')?number?string("0.0000")}
- 新增的
?number用于将清理后的纯数字字符串转为数值类型 ?string("0.0000")会将数值格式化为固定4位小数,自动对第5位小数做四舍五入,你的示例值0.85813707处理后输出为0.8581
方案2:截断保留4位小数(不执行四舍五入)
如果不需要四舍五入,直接舍去第4位之后的数值,用字符串截取实现:
<#assign cleanRate = record.exchangerate?string?replace('[^.,0-9]','','r')> <#if cleanRate?contains('.')> ${cleanRate?substring(0, cleanRate?index_of('.') + 5)} <#else> ${cleanRate}.0000 </#if>
- 先判断清洗后的字符串是否包含小数点,包含的话直接截取到小数点后第4位,不包含则补4个0
内容的提问来源于stack exchange,提问作者Barbu Alin
相关产品推荐
相关产品推荐

