Weil heute Sonntag ist!pillmuncher hat geschrieben:Warum? Oh, warum nur?![]()

Weil heute Sonntag ist!pillmuncher hat geschrieben:Warum? Oh, warum nur?![]()
Bei mir klappt es. Wie hast Du das getestet? Die einzige Erklärung wäre die, dass `sage` anders castet, als ein normales Python das tun würde.dark123 hat geschrieben: funktioniert nicht. das liefert nämlich immer true.
Code: Alles auswählen
definition:
def is_integer(x):
return not x % 1
aufruf:
test = 2/3
is_integer(test)
evaluate:
True
Code: Alles auswählen
In [1]: 2/3
Out[1]: 0
In [2]: 2.0/3
Out[2]: 0.6666666666666666
Code: Alles auswählen
import math
def is_integerish(x):
return math.floor(x) == math.ceil(x)
Code: Alles auswählen
EPSILON = ... # hier bitte ein hinreichend kleines float zuweisen
def feq(x, y):
return abs(float(x)-float(y)) < EPSILON
Code: Alles auswählen
def is_integerish(x):
return feq(x, math.floor(x)) or feq(x, math.ceil(x))
Code: Alles auswählen
>>> a = 4.0000
>>> a == round(a, 0)
True
Code: Alles auswählen
def is_integer(x):
return x == round(x, 0)
Code: Alles auswählen
In [9]: a('round(1.234, 0) == 1.234')
Out[9]: 2.1165199279785156
In [10]: a('int(1.234) == 1.234')
Out[10]: 0.423098087310791
Code: Alles auswählen
def a(*args):
return timeit.Timer(*args).timeit()
Code: Alles auswählen
In [11]: a('not 1.234 % 1')
Out[11]: 0.05470418930053711 # ca. 38,7× schneller :D