diff -r d00a1c46fff7 Objects/longobject.c --- a/Objects/longobject.c Thu Feb 04 14:08:23 2016 -0500 +++ b/Objects/longobject.c Thu Feb 04 20:52:15 2016 -0500 @@ -2765,6 +2765,10 @@ PyErr_BadInternalCall(); return -1.0; } + if (PyLong_CheckExact(v) && Py_ABS(Py_SIZE(v)) <= 1) { + /* fast path; single digit will always fit decimal */ + return (double)MEDIUM_VALUE((PyLongObject *)v); + } if (!PyLong_Check(v)) { PyErr_SetString(PyExc_TypeError, "an integer is required"); return -1.0;