Я пытаюсь отформатировать нулевое значение валюты как пустую строку, так что, когда значение валюты равно 0.00
, тогда отображается пустая строка, а не . Этот код является частью приложения ASP.Net, которое отображает значение валюты для конечного пользователя.Отформатируйте нулевое значение валюты с помощью {0: C} в VB.Net
Я использовал следующий код для достижения этой цели.
Вопрос: Можно ли достичь этого, используя только {0:C}
формат строки или другой версии этого формата строки вместо использования if then else
кодирования для этого? Если я использую ###,###,###.##
в качестве строки формата данных, тогда пустая строка показывает значение нулевой валюты, а также я избавляюсь от кодировки if then else
, но для ненулевых значений символ валюты не отображается.
If Double.Parse(Decimal.Parse(CDec(currencyValue))) = 0 Then
charValue = Nothing
Else
charValue = String.Format("{0:C}", CDec(currencyValue))
End If
UPDATE
Я в конечном итоге, используя следующий код, который работает отлично. If
лучше, чем IIf
, потому что он выполняет короткое замыкание, что означает, что IIf
будет оценивать все выражения, является ли условие истинным или ложным, но If
будет оценивать первое выражение, только если условие истинно и оценивает второе выражение, только если условие ложно.
Dim d As Decimal
Decimal.TryParse(currencyValue, d)
charValue = If(d = 0D, Nothing, String.Format("{0:C}", d))
Для ненулевых значений символ валюты конкретной культуры не будет включен в форматированное значение, если я использую ваш код. Мне нужен символ валюты для ненулевых значений. – Sunil
@Sunil Вы можете использовать 'Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol', чтобы получить символ валюты. –