Я столкнулся с проблемой пользовательского интерфейса из-за форматирования валюты.
Два разных свойства ...
Public Property ShippingRate() As Decimal
Get
Return _shippingRate
End Get
Set(ByVal value As Decimal)
_shippingRate = value
End Set
End Property
Public Property TotalShipping() As Decimal
Get
Return _totalShipping
End Get
Set(ByVal value As Decimal)
_totalShipping = Math.Round(value, 2)
End Set
End Property
Оба эти свойства вызываются в различных частях кода , но они оба вызываются таким образом ...
Me.txtBoxOutput.Text = myObject.ShippingRate.ToString("c")
Me.txtBoxOutput2.Text = myObject2.TotalShipping.ToString("c")
Когда я отлаживаю, если получаю десятичное число, равное 10.345
для обоих этих свойств (TotalShipping может в конечном итоге быть ShippingRate +/- другие логи c), я вижу другой вывод в текстовых полях. Свойство, которое округляется, будет $10.34
, а другое свойство, которое не округлено, будет $10.35
.
С момента округления до 2-й десятичной запятой я предположил, что она округляет эту цифру до 5, что неявно делает ToString("c")
.
Итак, мой вопрос ... что правильный способ отображения валюты. Я провел небольшое исследование по ставкам доставки (UPS и Fedex) и как они часто будут использовать 5 в тысячном десятичном знаке.