[Jython-checkins] jython: Add is_integer to float and handle pow NaN better.

frank.wierzbicki jython-checkins at python.org
Tue Jan 8 00:14:38 CET 2013


http://hg.python.org/jython/rev/0ad77049c023
changeset:   6940:0ad77049c023
user:        Frank Wierzbicki <fwierzbicki at gmail.com>
date:        Mon Jan 07 15:14:29 2013 -0800
summary:
  Add is_integer to float and handle pow NaN better.

files:
  src/org/python/core/PyFloat.java |  20 ++++++++++++++++++--
  1 files changed, 18 insertions(+), 2 deletions(-)


diff --git a/src/org/python/core/PyFloat.java b/src/org/python/core/PyFloat.java
--- a/src/org/python/core/PyFloat.java
+++ b/src/org/python/core/PyFloat.java
@@ -733,8 +733,12 @@
             return new PyFloat(0);
         }
 
-        if ((value == 1.0) && Double.isNaN(iw)) {
-            return new PyFloat(1.0);
+        if (Double.isNaN(iw)) {
+            if (value == 1.0) {
+                return new PyFloat(1.0);
+            } else {
+                return new PyFloat(Double.NaN);
+            }
         }
 
         if (value < 0 && iw != Math.floor(iw)) {
@@ -848,6 +852,18 @@
         return this;
     }
 
+    public boolean is_integer() {
+        return float_is_integer();
+    }
+
+    @ExposedMethod(doc = BuiltinDocs.float_is_integer_doc)
+    final boolean float_is_integer() {
+        if (Double.isInfinite(value)) {
+            return false; 
+        }
+        return Math.floor(value) == value;
+    }
+
     @Override
     public PyComplex __complex__() {
         return new PyComplex(getValue(), 0.);

-- 
Repository URL: http://hg.python.org/jython


More information about the Jython-checkins mailing list