默认情况下,Groovy将映射数值视为大小数

默认情况下,Groovy将映射数值视为大小数,groovy,Groovy,我在groovy中创建了一个映射: def measureMap = [:] measureMap.put('engine.temperature', 70.0) measureMap.put('fuel.level', 71.0) 此映射的值被视为Bigdecimal 这有什么原因吗 为什么我要问这个我知道等级制度 java.lang.Object java.lang.Number java.math.BigDecimal 我认为默认情况下,它应该被认为是双/浮点。< P>默认情况下,Gr

我在groovy中创建了一个映射:

def measureMap = [:]
measureMap.put('engine.temperature', 70.0)
measureMap.put('fuel.level', 71.0)
此映射的值被视为Bigdecimal

这有什么原因吗

为什么我要问这个我知道等级制度

java.lang.Object
java.lang.Number
java.math.BigDecimal

我认为默认情况下,它应该被认为是双/浮点。

< P>默认情况下,Groovy使用代码> BigDecimal < /代码>十进制数。这是:

为了方便精确计算十进制数,Groovy选择java.lang.BigDecimal作为其十进制数类型。此外,还支持float和double,但需要显式类型声明、类型强制或后缀。即使BigDecimal是十进制数的默认值,在采用float或double作为参数类型的方法或闭包中也可以接受此类文本

如果需要在映射中双重键入值,可以为双重/浮动文字添加熟悉的
D
F
后缀:

measureMap.put('engine.temperature', 70.0d) //java.lang.Double
measureMap.put('engine.temperature', 71.0f) //java.lang.Float

我认为Groovy的创建者在这里做出了一个非常好的决定。默认情况下选择准确性,让用户在需要时选择性能。