-
Notifications
You must be signed in to change notification settings - Fork 384
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
QuantityFormatter inconsequential format strings #1183
Comments
Hm, the wiki docs seem outdated: https://github.com/angularsen/UnitsNet/wiki/String-Formatting This is the latest PR that changed this: In particular, this xmldoc describes the current capabilities and the wiki should be updated to reflect this. Back to your proposal:
Or so I recall, I may be off on some details. |
Ah yes, I overlooked that small difference between G and S. So what do you think about e.g. a P for always default floating-point notation and never scientific notation or changing it for S? Because I find it confusing that S4 says 4 significant digits AFTER radix and then 0.001 gets displayed as 1e-03 even though one would expect the 1 significant digit of the number to be behind the comma and not normalized to scientific notation. Also, .NET uses non-scientific notation down to 0.0001 and only for 1e-5 it uses scientific notation. |
Yes, for good or worse, we decided on a different breaking point for scientific notation that felt more easy to read. Beyond that, I think the behavior is inline with .NET, that the breaking point to scientific notation ignores the requested precision. The difference is that we break on 1e3 instead of 1e5, which can be a separate discussion.
Trying out a few things, it seems our implementation has some bugs:
Another peculiarity, G2 and S2 don't affect the precision. |
Yes, I think that is useful. I believe .NET uses "f" "F" format for this:
|
I'd love to rectify and fix this, so if you are eager to do a pull request I'm happy to assist. |
I created #1206 to simply stop overriding a .NET format specifier. I think we should only have "UnitsNet" custom formats, not change expected onces. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
Unstale this. Will be fixed by #1206 |
This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days. |
Pinned |
- [x] `QuantityFormatter` defaults to the "G" format for null or empty string - [x] `QuantityFormatter` no longer supports the `U`/`V`/`Q` formats (an exception is thrown) - [x] `QuantityFormatter` explicitly throws for the `Cx`/`Px` formats - [x] `QuantityFormatter` shouldn't throw for something like "P1: #.00" (instead it should output something like "P1: 12.34 mg") - [x] `QuantityFormatter` unless explicitly given an incorrect `Ax` specifier, the `QuantityFormatter` uses the "default unit abbreviation" - which maybe `string.Empty` (if none are defined for a given unit) Fixes #1183 Duplicate of #1206 CC @tmilnthorp --------- Co-authored-by: Andreas Gullberg Larsen <[email protected]>
Hi,
as we were having issues with how the QuantityTypeConverter displayed small values, I've dug through the code of the QuantityFormatter and found a pecularity.
If you pass the general format string "G" (or none), FormatUntrimmed always uses 2 significant digits instead of the the number specified after G (e.g. "G5"). And there is the format string "S" that allows to specify the amount of significant digits. And, unfortunately, there is no way to always display the number in normal fixed-point notation, as values below 1e-3 are displayed in scientific notation.
So I propose to move the feature that you can specify the number of significant digits and use scientific notation below 1e-3 to the format string "G" (so "G" without a number still means "G2", and for "Gn" n significant digits are shown). And for never using scientific notation we could either use "S" (as that would become obsolete when "Gn" works) or introduce a separate letter for it. However, I favor the former option.
If you agree I would change this, so that it will be part of the v5 release.
The text was updated successfully, but these errors were encountered: