gpt4 book ai didi

java - 我们如何处理Java中float类型的溢出边缘情况?

转载 作者:行者123 更新时间:2023-11-30 03:11:29 25 4
gpt4 key购买 nike

我知道,如果我们想防止整数类型溢出,我们可以使用 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);
}

最佳答案

试试这个:

    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;

源代码:

http://grepcode.com/file_/repo1.maven.org/maven2/commons-beanutils/commons-beanutils/1.9.0/org/apache/commons/beanutils/locale/converters/FloatLocaleConverter.java/?v=source

关于java - 我们如何处理Java中float类型的溢出边缘情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33550008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com