sbws does not round bandwidths to 3 significant figures

sbws currently rounds bandwidths to the nearest 1000. (Bandwidths under 500 are rounded to 1.)

This creates large errors in relay bandwidths:

  • max(round(499, -3), 1) = 1
  • max(round(500, -3), 1) = 1000
  • max(round(1499, -3), 1) = 1000

But torflow rounds bandwidths to 3 significant figures: https://gitweb.torproject.org/torflow.git/tree/NetworkScanners/BwAuthority/aggregate.py#n62

And proposal 276 says to round to 2 significant figures, with some extra rounding of the final non-zero digit: https://gitweb.torproject.org/torspec.git/tree/proposals/276-lower-bw-granularity.txt#n36

This is a bug on legacy/trac#27337 (moved).