写完这条消息后,我真的会尽量停止思考这个问题。
这里有一个可以想象出的可能的规则,但我认为如果实现了这条规则,它的行为可能会很奇怪并且令人惊讶。
"如果非整数的十进制字面量可以精确地表示为double,就将其表示为double,否则将其表示为精确的BigDecimal(对于任何有限序列的十进制数字都是可能的)。"
考虑所有这些字面量:0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0。在这些11个字面量中,只有0.0, 0.5和1.0可以精确表示为double,因此根据上述规则,这三个将是double,其余的8个将变为BigDecimal。
同样,对于2位小数的101个字面量(从0.00到1.00),只有5个可以精确地表示为double:0.00, 0.25, 0.50, 0.75和1.00。根据上述规则,只有这5个字面量将是double类型,其余都将变为BigDecimal。