Skip to content

Commit de2e80b

Browse files
committed
! show-duplicate-java-classes: improve percent output format
1 parent ac6cf80 commit de2e80b

File tree

1 file changed

+28
-2
lines changed

1 file changed

+28
-2
lines changed

bin/show-duplicate-java-classes

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,32 @@ def str_len(x):
8888
return len(str(x))
8989

9090

91+
# issue 32790: Keep trailing zeros in precision for string format option g - Python tracker
92+
# https://bugs.python.org/issue32790
93+
def percent_str(num):
94+
"""
95+
Input => Output
96+
1.4545 / 10 **-1 => 1455%
97+
1.4545 / 10 ** 0 => 145%
98+
1.4545 / 10 ** 1 => 14.5%
99+
1.4545 / 10 ** 2 => 1.45%
100+
1.4545 / 10 ** 3 => 0.145%
101+
1.4545 / 10 ** 4 => 0.015%
102+
1.4545 / 10 ** 5 => 0.001%
103+
1.4545 / 10 ** 6 => 0.000%
104+
1.4545 / 10 ** 7 => 0.000%
105+
"""
106+
num = num * 100
107+
if num >= 100:
108+
return '%.0f%%' % num
109+
elif num >= 10:
110+
return '%.1f%%' % num
111+
elif num >= 1:
112+
return '%.2f%%' % num
113+
else:
114+
return '%.3f%%' % num
115+
116+
91117
def list_jar_file_under_lib_dirs(lib_dirs, recursive):
92118
jar_files = set()
93119

@@ -251,8 +277,8 @@ def print_duplicate_classes_info(class_paths_to_duplicate_classes, class_path_to
251277
max_idx_str_len = str_len(len(class_paths_to_duplicate_classes))
252278
for idx, (class_paths, classes) in enumerate(class_paths_to_duplicate_classes, start=1):
253279
duplicate_ratio = len(classes) / min((len(class_path_to_classes[cp]) for cp in class_paths))
254-
print('[%*s] found %s(%.3g%%) duplicate classes in %s class paths:' % (
255-
max_idx_str_len, idx, len(classes), duplicate_ratio * 100, len(class_paths)))
280+
print('[%*s] found %s(%s) duplicate classes in %s class paths:' % (
281+
max_idx_str_len, idx, len(classes), percent_str(duplicate_ratio), len(class_paths)))
256282

257283
max_class_path_idx_str_len = str_len(len(class_paths))
258284
max_classes_count_str_len = str_len(max(len(class_path_to_classes[cp]) for cp in class_paths))

0 commit comments

Comments
 (0)