format_bytes rework, moving from decimal multipliers to binary ones #9736
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Some reference implementations:
Before this PR, 10000 would be returned as
10.0 KB, after as9.76 KiB(node 9.76 * 1024 = 10000).Note that input side both styles are now supported, so both
100.0 KB,97.6 KiB,100000 bytes,0.1 MBor0.095367432 MiBare supported and the resulting settings would be roughly equivalent.This PR makes a few opinionated choices:
MiBinstead ofMB7649 kBis rendered instead of7.6 MBAn overload for
format_bytestaking the binary base was considered, but given there are other possible overloads (precision, preferred unit), I think it's safer to avoid it, also given there are the alternative methodsformatReadableSizeandformatReadableDecimalSize.