如何在BigDecimal类型键的Map中设置虚拟键值?示例推荐
适合作为BigDecimal类型Map虚拟键的示例值
嘿,我来给你推荐几个靠谱的BigDecimal虚拟键值,选这些的核心原则就是和你的业务真实数据绝对不重叠,下面是具体例子:
超大/极端数值:
用远超业务场景范围的数值,比如:// 超大正数虚拟键 new BigDecimal("9999999999999999.9999999999") // 超大负数虚拟键 new BigDecimal("-9999999999999999.9999999999")正常业务里几乎不会用到这么夸张的数值,完全不用担心和真实键冲突。
极小精度数值:
选择精度远超业务需求的极小值,比如:// 极小正数,精度到小数点后10位 new BigDecimal("0.0000000001") // 极小负数 new BigDecimal("-0.0000000001")这类值在常规业务计算里很少出现,用作虚拟键很安全。
业务专属特殊值:
如果你的业务数据有明确的范围(比如都是正整数、或者最多小数点后两位),可以自定义一个完全不在这个范围内的值,比如:// 假设业务数据最多小数点后两位,这个值有五位小数,绝对不会重复 new BigDecimal("1234.56789")
避坑提醒
别尝试用NaN或者无穷大这类值!BigDecimal并不支持这些特殊浮点值,强行使用会直接抛出异常,反而添乱。另外如果业务里有可能用到BigDecimal.ZERO作为真实键,就别用0当虚拟键,优先选上面的极端值更稳妥。
建议把虚拟键定义成常量,方便统一维护:
private static final BigDecimal DUMMY_DISPLAY_KEY = new BigDecimal("9999999999999999.9999999999"); // 使用时直接调用 map.put(DUMMY_DISPLAY_KEY, "Display message");
内容的提问来源于stack exchange,提问作者dsdfd fdfd
相关产品推荐
相关产品推荐

