| 123456789101112131415161718192021222324252627282930313233 |
- # test floating point floor divide and modulus
- # it has some tricky corner cases
- # pyboard has 32-bit floating point and gives different (but still
- # correct) answers for certain combinations of divmod arguments.
- def test(x, y):
- div, mod = divmod(x, y)
- print(div == x // y, mod == x % y, abs(div * y + mod - x) < 1e-6)
- test(1.23456, 0.7)
- test(-1.23456, 0.7)
- test(1.23456, -0.7)
- test(-1.23456, -0.7)
- a = 1.23456
- b = 0.7
- test(a, b)
- test(a, -b)
- test(-a, b)
- test(-a, -b)
- for i in range(25):
- x = (i - 12.5) / 6
- for j in range(25):
- y = (j - 12.5) / 6
- test(x, y)
- # test division by zero error
- try:
- divmod(1.0, 0)
- except ZeroDivisionError:
- print('ZeroDivisionError')
|