在写完这条消息后,我会真的尽力停止思考这件事。
这里有一条可能的规则可以想象,但我认为如果实施了它,其行为将会非常令人惊讶。
"如果非整数的十进制字面量可以精确地作为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,所以根据上述规则,这3个字面量应该是double,其余8个将被转换为BigDecimal。
类似地,对于小数点后有两位数字的101个字面量,如0.00,0.01,0.02等,直至1.00,其中只有5个可以精确表示为double:0.00,0.25,0.50,0.75和1.00。根据上述规则,只有这5个字面量将是double类型,其余的都将转换为BigDecimal。