1
2 """
3 Format numbers nicely for printing.
4 """
5
6 import math
7 __all__ = ['format_uncertainty']
8
58
59
61 value_str = format_uncertainty
62
63
64 assert value_str(1235670,766000) == "1.24(77)e6"
65 assert value_str(123567.,76600) == "124(77)e3"
66 assert value_str(12356.7,7660) == "12.4(77)e3"
67 assert value_str(1235.67,766) == "1.24(77)e3"
68 assert value_str(123.567,76.6) == "124(77)"
69 assert value_str(12.3567,7.66) == "12.4(77)"
70 assert value_str(1.23567,.766) == "1.24(77)"
71 assert value_str(.123567,.0766) == "0.124(77)"
72 assert value_str(.0123567,.00766) == "0.0124(77)"
73 assert value_str(.00123567,.000766) == "0.00124(77)"
74 assert value_str(.000123567,.0000766) == "124(77)e-6"
75 assert value_str(.0000123567,.00000766) == "12.4(77)e-6"
76 assert value_str(.00000123567,.000000766) == "1.24(77)e-6"
77 assert value_str(.000000123567,.0000000766) == "124(77)e-9"
78 assert value_str(.00000123567,.0000000766) == "1.236(77)e-6"
79 assert value_str(.0000123567,.0000000766) == "12.357(77)e-6"
80 assert value_str(.000123567,.0000000766) == "123.567(77)e-6"
81 assert value_str(.00123567,.000000766) == "0.00123567(77)"
82 assert value_str(.0123567,.00000766) == "0.0123567(77)"
83 assert value_str(.123567,.0000766) == "0.123567(77)"
84 assert value_str(1.23567,.000766) == "1.23567(77)"
85 assert value_str(12.3567,.00766) == "12.3567(77)"
86 assert value_str(123.567,.0764) == "123.567(76)"
87 assert value_str(1235.67,.764) == "1235.67(76)"
88 assert value_str(12356.7,7.64) == "12356.7(76)"
89 assert value_str(123567,76.4) == "123567(76)"
90 assert value_str(1235670,764) == "1.23567(76)e6"
91 assert value_str(12356700,764) == "12.3567(76)e6"
92 assert value_str(123567000,7640) == "123.567(76)e6"
93 assert value_str(1235670000,76400) == "1.23567(76)e9"
94
95
96 assert value_str(123567,764000) == "0.12(76)e6"
97 assert value_str(12356.7,76400) == "12(76)e3"
98 assert value_str(1235.67,7640) == "1.2(76)e3"
99 assert value_str(123.567,764) == "0.12(76)e3"
100 assert value_str(12.3567,76.4) == "12(76)"
101 assert value_str(1.23567,7.64) == "1.2(76)"
102 assert value_str(.123567,.764) == "0.12(76)"
103 assert value_str(.0123567,.0764) == "12(76)e-3"
104 assert value_str(.00123567,.00764) == "1.2(76)e-3"
105 assert value_str(.000123567,.000764) == "0.12(76)e-3"
106
107
108 assert value_str(123567,7640000) == "0.1(76)e6"
109 assert value_str(12356.7,764000) == "0.01(76)e6"
110 assert value_str(1235.67,76400) == "0.001(76)e6"
111 assert value_str(123.567,7640) == "0.1(76)e3"
112 assert value_str(12.3567,764) == "0.01(76)e3"
113 assert value_str(1.23567,76.4) == "0.001(76)e3"
114 assert value_str(.123567,7.64) == "0.1(76)"
115 assert value_str(.0123567,.764) == "0.01(76)"
116 assert value_str(.00123567,.0764) == "0.001(76)"
117 assert value_str(.000123567,.00764) == "0.1(76)e-3"
118
119
120 assert value_str(12356700,7640000000) == "0.0(76)e9"
121 assert value_str(1235670,764000000) == "0.00(76)e9"
122 assert value_str(123567,76400000) == "0.000(76)e9"
123 assert value_str(12356,7640000) == "0.0(76)e6"
124 assert value_str(1235,764000) == "0.00(76)e6"
125 assert value_str(123,76400) == "0.000(76)e6"
126 assert value_str(12,7640) == "0.0(76)e3"
127 assert value_str(1,764) == "0.00(76)e3"
128 assert value_str(0.1,76.4) == "0.000(76)e3"
129 assert value_str(0.01,7.64) == "0.0(76)"
130 assert value_str(0.001,0.764) == "0.00(76)"
131 assert value_str(0.0001,0.0764) == "0.000(76)"
132 assert value_str(0.00001,0.00764) == "0.0(76)e-3"
133
134
135 assert value_str(12356700,76400000000) == "0.000(76)e12"
136 assert value_str(1235670,7640000000) == "0.0(76)e9"
137 assert value_str(123567,764000000) == "0.00(76)e9"
138 assert value_str(12356,76400000) == "0.000(76)e9"
139 assert value_str(1235,7640000) == "0.0(76)e6"
140 assert value_str(123,764000) == "0.00(76)e6"
141 assert value_str(12,76400) == "0.000(76)e6"
142 assert value_str(1,7640) == "0.0(76)e3"
143 assert value_str(0.1,764) == "0.00(76)e3"
144 assert value_str(0.01,76.4) == "0.000(76)e3"
145 assert value_str(0.001,7.64) == "0.0(76)"
146 assert value_str(0.0001,0.764) == "0.00(76)"
147 assert value_str(0.00001,0.0764) == "0.000(76)"
148 assert value_str(0.000001,0.00764) == "0.0(76)e-3"
149
150
151 assert value_str(-1235670,765000) == "-1.24(77)e6"
152 assert value_str(-1.23567,.765) == "-1.24(77)"
153 assert value_str(-.00000123567,.0000000765) == "-1.236(77)e-6"
154 assert value_str(-12356.7,7.64) == "-12356.7(76)"
155 assert value_str(-123.567,764) == "-0.12(76)e3"
156 assert value_str(-1235.67,76400) == "-0.001(76)e6"
157 assert value_str(-.000123567,.00764) == "-0.1(76)e-3"
158 assert value_str(-12356,7640000) == "-0.0(76)e6"
159 assert value_str(-12,76400) == "-0.000(76)e6"
160 assert value_str(-0.0001,0.764) == "-0.00(76)"
161
162
163 if __name__ == "__main__": test()
164