提问人:John Smith 提问时间:10/20/2023 最后编辑:John Smith 更新时间:10/20/2023 访问量:68
如何从浮点数中获取地图值
How to get map values from a float
问:
我有一个地图,我想像在实线上的数学函数一样使用它,即我给它一个浮点值,它返回一个浮点值。
如果有这样的东西:
Map<Double, Double> map = new HashMap<>();
由于浮点不精确,尝试访问值时可能会得到 null。因此,使用浮点值作为地图的键是不明智的。
实现目标的最佳方式是什么?我需要有一个 (x, y) 值的映射,允许我从 x 值中获取 y 值。我想还有其他数据类型或不允许不精确的东西?
感谢所有回答。
答:
1赞
Reilas
10/20/2023
#1
"...由于浮点不精确,尝试访问值时可能会得到 null。因此,使用浮点值作为地图的键是不明智的。..."
使用 BigDecimal 类。
class DoubleMap extends HashMap<BigDecimal, Double> {
Double put(String k, Double v) {
return super.put(new BigDecimal(k), v);
}
Double get(String k) {
for (Entry<BigDecimal, Double> e : entrySet())
if (e.getKey().toPlainString().equals(k))
return e.getValue();
return null;
}
}
DoubleMap map = new DoubleMap();
map.put("1.23", 4.56);
评论