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