Как уже отмечалось, десятичное число, в котором хранится 2.0100
, может отличаться от того, в котором хранится 2.01
, и это может повлиять на поведение по умолчанию ToString()
.
Я рекомендую никогда не использоватьthis.
Во-первых, decimal.Parse("2.0100") == decimal.Parse("2.01")
возвращает true
.Хотя их внутренние представления различны, это, к сожалению, IMO.Когда я использую decimal
со значением 2,01, я хочу думать:
2.01
Not:
struct decimal {private int flags;личное инт привет;частный инт ло;частный int mid;/ методы, делающие это действительно полезным /}
Хотя могут существовать различные способы хранения 2.01
в приведенной выше структуре, 2,01 остается 2,01.
Если вы заботитесь оон представлен как 2.01
, а не как 2.0
или 2.0100
, тогда вы заботитесь о строковом представлении.Вы беспокоитесь о том, как десятичная дробь представляется в виде строки, и именно так вы должны думать об этом на этом этапе.Рассмотрим рассматриваемое правило (показаны минимальные и максимальные значащие цифры, а также следует ли включать или исключить завершающие нули) и затем код ToString
, соответствующий вызову.
И сделайте это близко к месту, где используется строка.
Если вам небезразлично 2.01
, то обращайтесь к нему как к десятичному знаку и рассмотрите любой код, для которого разница между 2.01
и 2.0100
имеет значение, как ошибку, и исправьте ее.
Четко разделите код между тем, где вы используете строки, и тем, где вы используете десятичные дроби.