package cn.iocoder.yudao.module.qcreport.engine; /** * 数值输出格式。 *

* Java 的 {@code String.valueOf(210.0D)} 得到 "210.0",而 JS 的 {@code String(210)} 是 "210"。 * 渲染产物({@code @page} 尺寸、绑定值、比较时的文本形态)必须与前端逐字一致, * 否则同一份模板在两端会输出不同的 HTML。 */ public final class Numbers { /** 双精度能精确表示成整数的上界,超过它就不再当整数处理 */ private static final double MAX_SAFE_INTEGER = 9.007199254740992E15; private Numbers() { } /** 整数值的浮点数收成整数输出(60.0 → "60"),其余原样输出 */ public static String toString(double value) { if (Double.isFinite(value) && value == Math.rint(value) && Math.abs(value) <= MAX_SAFE_INTEGER) { return String.valueOf((long) value); } return String.valueOf(value); } }