我知道如果我们想要防止整数类型的溢出,我们可以使用long类型来获取它并将long类型与Integer.MAX_VALUE进行比较。那么浮动值怎么样?
例如
// Question: How do I prevent float overflow
private float distance(Point p, Cluster c){
float px = p.getX(), py = p.getY(), cx = c.getXMean(), cy = c.getYMean();
return (px - cx) * (px - cx) + (py - cy) * (py - cy);
}
答案 0 :(得分:2)
试试这个:
double doubleValue = (px - cx) * (px - cx) + (py - cy) * (py - cy);
double posDouble = (doubleValue >= 0) ? doubleValue : (doubleValue * -1);
if (posDouble != 0 && (posDouble < Float.MIN_VALUE || posDouble > Float.MAX_VALUE)) {
throw new Exception("Overflow");
}
return (float)doubleValue;
源代码: