Я хотел бы напечатать мое очень небольшое число в C# в человеческом дружественны, таких как:сделать большие и малые числа читаемым человеком
30µ
для 3E-5
или 456.789n
для 0.000000456789
.
Я знаю о функции Humanize_number() от BSD в C, но только совместим с битовыми ints, а не плавает и удваивает. Есть ли эквивалент в C#, который поддерживает эти?
Кроме того, он должен держать определенное количество точности при отображении чисел, например:
0.003596
должны отображаться как 3.596µ
, не 3.6µ
(или хуже, 4µ
).
Возможный ответ здесь: Formatting Large Numbers with .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, поэтому если вопрос уже ответил, жарь!
[. нет, вы не спите] (http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-sa lutations-be-deleted-from-posts/93989 # 93989) –
Прошу прощения, но ответ http://stackoverflow.com/questions/1555397/formatting-large-numbers-with-net на самом деле не помогает. Я хотел бы сохранить максимальную точность в вещах, которые я показываю. – Gui13
Не похоже, что было бы ужасно сложно перенести код для 'humanize_number': http://www.opensource.apple.com/source/libutil/libutil-20/humanize_number.c –