Browse Source

添加 RoundingMode 配置

James 5 years ago
parent
commit
a8a1e16ed6
1 changed files with 17 additions and 0 deletions
  1. 17 0
      src/main/java/com/jfinal/template/EngineConfig.java

+ 17 - 0
src/main/java/com/jfinal/template/EngineConfig.java

@@ -17,6 +17,7 @@
 package com.jfinal.template;
 
 import java.lang.reflect.Method;
+import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -26,6 +27,7 @@ import java.util.Map.Entry;
 import java.util.Objects;
 import java.util.Set;
 import com.jfinal.kit.StrKit;
+import com.jfinal.template.expr.ast.Arith;
 import com.jfinal.template.expr.ast.ExprList;
 import com.jfinal.template.expr.ast.SharedMethodKit;
 import com.jfinal.template.ext.directive.*;
@@ -74,6 +76,9 @@ public class EngineConfig {
 	private String encoding = DEFAULT_ENCODING;
 	private String datePattern = "yyyy-MM-dd HH:mm";
 	
+	// 浮点数输出与运算时使用的舍入模式,默认值为 "四舍五入"
+	private RoundingMode roundingMode = RoundingMode.HALF_UP;
+	
 	public EngineConfig() {
 		// 内置指令 #() 与 #include() 需要配置,保留指令所在行前后空白字符以及行尾换行字符 '\n'
 		setKeepLineBlank("output", true);
@@ -436,6 +441,18 @@ public class EngineConfig {
 	public Compressor getCompressor() {
 		return compressor;
 	}
+	
+	/**
+	 * 设置 #number 指令与 Arith 中浮点数的舍入规则,默认为 RoundingMode.HALF_UP "四舍五入"
+	 */
+	public void setRoundingMode(RoundingMode roundingMode) {
+		this.roundingMode = roundingMode;
+		Arith.setBigDecimalDivideRoundingMode(roundingMode);
+	}
+	
+	public RoundingMode getRoundingMode() {
+		return roundingMode;
+	}
 }