float1.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. # test basic float capabilities
  2. # literals
  3. print(.12)
  4. print(1.)
  5. print(1.2)
  6. print(0e0)
  7. print(0e+0)
  8. print(0e-0)
  9. # float construction
  10. print(float(1.2))
  11. print(float("1.2"))
  12. print(float("+1"))
  13. print(float("1e1"))
  14. print(float("1e+1"))
  15. print(float("1e-1"))
  16. print(float("inf"))
  17. print(float("-inf"))
  18. print(float("INF"))
  19. print(float("infinity"))
  20. print(float("INFINITY"))
  21. print(float("nan"))
  22. print(float("-nan"))
  23. print(float("NaN"))
  24. try:
  25. float("")
  26. except ValueError:
  27. print("ValueError")
  28. try:
  29. float("1e+")
  30. except ValueError:
  31. print("ValueError")
  32. try:
  33. float("1z")
  34. except ValueError:
  35. print("ValueError")
  36. # construct from something with the buffer protocol
  37. print(float(b"1.2"))
  38. print(float(bytearray(b"3.4")))
  39. # unary operators
  40. print(bool(0.0))
  41. print(bool(1.2))
  42. print(+(1.2))
  43. print(-(1.2))
  44. # division of integers
  45. x = 1 / 2
  46. print(x)
  47. # /= operator
  48. a = 1
  49. a /= 2
  50. print(a)
  51. # floor division
  52. print(1.0 // 2)
  53. print(2.0 // 2)
  54. # comparison
  55. print(1.2 <= 3.4)
  56. print(1.2 <= -3.4)
  57. print(1.2 >= 3.4)
  58. print(1.2 >= -3.4)
  59. # comparison of nan is special
  60. nan = float('nan')
  61. print(nan == 1.2)
  62. print(nan == nan)
  63. try:
  64. 1.0 / 0
  65. except ZeroDivisionError:
  66. print("ZeroDivisionError")
  67. try:
  68. 1.0 // 0
  69. except ZeroDivisionError:
  70. print("ZeroDivisionError")
  71. try:
  72. 1.2 % 0
  73. except ZeroDivisionError:
  74. print("ZeroDivisionError")
  75. try:
  76. 0.0 ** -1
  77. except ZeroDivisionError:
  78. print("ZeroDivisionError")
  79. # unsupported unary ops
  80. try:
  81. ~1.2
  82. except TypeError:
  83. print("TypeError")
  84. try:
  85. 1.2 in 3.4
  86. except TypeError:
  87. print("TypeError")
  88. # small int on LHS, float on RHS, unsupported op
  89. try:
  90. print(1 | 1.0)
  91. except TypeError:
  92. print('TypeError')
  93. # can't convert list to float
  94. try:
  95. float([])
  96. except TypeError:
  97. print("TypeError")
  98. # test constant float with more than 255 chars
  99. x = 1.84728699436059052516398251149631771898472869943605905251639825114963177189847286994360590525163982511496317718984728699436059052516398251149631771898472869943605905251639825114963177189847286994360590525163982511496317718984728699436059052516398251149631771898472869943605905251639825114963177189
  100. print("%.5f" % x)