Я хотел бы напечатать мои очень маленькие цифры на С# дружественным человеком образом, например:
30µ
для 3E-5
или 456.789n
для 0.000000456789
.
Я знаю функцию Humanize_number() из BSD в C, но только совместим с битовыми ints, а не плавает и удваивает. Есть ли эквивалент в С#, который поддерживает эти?
Кроме того, он должен сохранять определенную точность при отображении чисел, например:
0.003596
должен отображаться как 3.596µ
, а не 3.6µ
(или, что еще хуже, 4µ
).
Возможный ответ здесь: Форматирование больших чисел с .NET, но адаптированный для отрицательного log10, обрезает числа до 1 цифры после запятой. Это далеко не полное, на мой взгляд.
Примеры того, как я хотел бы представить вещи:
3000 3K
3300 3.3K
3333 3.333K
30000 30k
300000 300k
3000000 3M
3000003 3.000003M // or 3M if I specify "4 digits precision"
0.253 253m
0.0253 25.3m
0.00253 2.53m
-0.253003 -253.003m
Я не мог сформулировать свой вопрос, чтобы найти соответствующие ответы в SO, поэтому, если вопрос уже был дан, уходите!