020_float.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. # test == != >= <= < >
  2. assert 1.0 == 1.0
  3. assert 1.0 != 1.1
  4. assert 1.0 >= 1.0
  5. assert 1.0 <= 1.0
  6. assert 1.0 < 1.1
  7. assert 1.1 > 1.0
  8. def eq(a, b):
  9. dt = a - b
  10. return dt > -0.001 and dt < 0.001
  11. # test + - * ** /
  12. assert eq(1.5 + 3, 4.5)
  13. assert eq(1.5 + 3.9, 5.4)
  14. assert eq(5.3 - 2.5, 2.8)
  15. assert eq(0.2**2, 0.04)
  16. assert eq(4**(-1.0), 0.25)
  17. assert eq(2/1, 2.0)
  18. assert eq(3/2.0, 1.5)
  19. assert eq(1/9, 0.11111)
  20. # test += -= *= /=
  21. x = 3.0
  22. x += 1
  23. assert eq(x, 4.0)
  24. x -= 1
  25. assert eq(x, 3.0)
  26. x *= 2
  27. assert eq(x, 6.0)
  28. x /= 1.8
  29. assert eq(x, 3.3333)
  30. # test __str__, __repr__
  31. assert str(1.0) == '1.0'
  32. assert repr(1.0) == '1.0'
  33. # test float()
  34. assert float() == 0.0
  35. assert float(True) == 1.0
  36. assert float(False) == 0.0
  37. assert float(1) == 1.0
  38. assert float(-2) == -2.0
  39. assert eq(float(1), 1.0)
  40. assert eq(float(1.0), 1.0)
  41. assert eq(float(1.1), 1.1)
  42. assert eq(float(1.9), 1.9)
  43. assert eq(float(-1.9), -1.9)
  44. assert eq(float(1.5), 1.5)
  45. assert eq(float(-1.5), -1.5)
  46. assert eq(float("123"), 123.0)
  47. assert eq(float("123.456"), 123.456)
  48. inf = float("inf")
  49. try:
  50. assert 1/0 == inf
  51. exit(1)
  52. except ZeroDivisionError:
  53. pass
  54. try:
  55. assert -1/0 == -inf
  56. exit(1)
  57. except ZeroDivisionError:
  58. pass
  59. assert 1/inf == 0
  60. assert -1/inf == 0
  61. assert 2**-6000 == 0.0
  62. assert 2.0 ** 6000 == inf
  63. assert (-2.0) ** 6001 == -inf
  64. # test .123 forms
  65. assert float(".123") == 0.123
  66. assert .123 == 0.123
  67. assert eq(.5 *2, 1.0)
  68. assert eq(2 * .5, 1.0)
  69. assert eq(2 * (.5), 1.0)
  70. assert eq(2 * (.5 + 1), 3.0)
  71. assert 1e3 == 1000.0
  72. assert 1e-3 == 0.001
  73. assert -1e3 == -1000.0
  74. assert -1e-3 == -0.001
  75. assert 1e0 == 1.0
  76. assert 1e-0 == 1.0
  77. assert 2e3 == 2000.0
  78. assert -2e-3 == -0.002
  79. assert 3.4e-3 == 0.0034
  80. assert 3.4e+3 == 3400.0
  81. assert abs(1.0) == 1.0
  82. assert abs(-1.0) == 1.0
  83. assert abs(0.0) == 0.0
  84. # import math
  85. # assert math.isnan(0/0)
  86. # assert 2e3j == 2000j
  87. # assert -2e-3j == -0.002j
  88. # try:
  89. # float('-x13')
  90. # exit(1)
  91. # except ValueError:
  92. # pass
  93. assert eq(10 % 4, 2)
  94. assert eq(10.5 % 4, 2.5)
  95. assert eq(10 % 4.5, 1.0)
  96. assert eq(10.5 % 4.5, 1.5)
  97. assert eq(10.5 // 4, 2.0)
  98. assert eq(10.5 // 4.5, 2.0)
  99. _0, _1 = divmod(10.5, 4)
  100. assert eq(_0, 2.0)
  101. assert eq(_1, 2.5)
  102. assert eq(3.4 % -2, -0.6)
  103. assert eq(-2 % 3.4, 1.4)
  104. assert eq(-3.4 % -2, -1.4)
  105. assert eq(-6 // 3.4, -2.0)
  106. assert eq(-6 % 3.4, 0.8)