2015-11-05 61 views
1

我已經知道,如果我們想要防止整數類型的溢出,我們可以使用long類型來獲取它,並將長類型與Integer.MAX_VALUE進行比較。那麼浮動價值怎麼樣?我們如何處理Java中浮點類型的溢出邊界情況?

例如

// 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); 
    } 
+1

你想爲一個字符串浮動和檢查溢出轉換?發佈您的代碼。 – Loc

+1

「Float.MAX_VALUE」有什麼問題? http://docs.oracle.com/javase/7/docs/api/java/lang/Float.html#MAX_VALUE – skypjack

+3

也許是'Double'? – 3kings

回答

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; 

的源代碼:

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