Oliver Seitz
unread,Dec 22, 2020, 6:59:15 AM12/22/20Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to Jallib
Hi all :-)
It's been nine days and nine years since the original print library was finally replaced by my version. I remember, I've said then, that I would also do the format library soon. I feel like it's about time now...
So, usually when I start thinking about improvement, I'm focused on mimicking the current behavior as close as possible. Yet... This is what it currently does:
format_sdword(output,12345678, 6,0) -> 5678
format_sdword(output,12345678, 7,0) -> �45678
format_sdword(output,12345678, 7,1) -> �4567.8
format_sdword(output,12345678, 8,0) -> C345678
format_sdword(output,12345678, 8,1) -> C34567.8
format_sdword(output,12345678, 8,2) -> C3456.78
format_sdword(output,12345678, 9,0) -> 12345678
format_sdword(output,12345678, 9,1) -> 1234567.8
format_sdword(output,12345678, 9,2) -> 123456.78
format_sdword(output,12345678,10,0) -> 12345678
format_sdword(output,12345678,10,1) -> 1234567.8
format_sdword(output,12345678,10,2) -> 123456.78
format_sdword(output,12345678,11,0) -> 12345678
format_sdword(output,12345678,11,1) -> 1234567.8
format_sdword(output,12345678,11,2) -> 123456.78
format_sdword(output,12345678,12,0) -> 12345678
format_sdword(output,12345678,12,1) -> 1234567.8
format_sdword(output,12345678,12,2) -> 123456.78
format_sdword(output,12345678,13,0) -> 12345678
format_sdword(output,12345678,13,1) -> 1234567.8
format_sdword(output,12345678,13,2) -> 123456.78
The third parameter, said to give the field length to be used, is quite limited:
1) The actual length differs, depending on the presence of a decimal point
2) Length greater than 11 is treated as 11
3) Too short a field leads to corruption of the number, always reserving places for sign and decimal point
3) probably can't be of any use - here's the question if the number should be truncated or replaced by error signs to show that something's wrong.
For 1) and 2), there's a possibility that existing programs rely on this behavior. But, as those are 'undocumented "features" ', I feel like they can be replaced by more useful things. Like, fields can be as long as 255 characters, and the number is truly right-aligned, if it has decimals or not.
If the number of decimals is greater than the field lengt-1, it is treated as zero. Here's another option to fill: what should be done if both numbers are nearly-equal, equal or the decimals number greater than the field length? Left-aligned, ignoring the field length?
Any preferences anyone?
Greets,
Kiste