Ответ 1
Вы можете использовать строковые коды формата в своем вызове ToString.
Я запрашиваю поле базы данных, которое возвращает денежное значение, я назначаю это строке, но добавляет к ней 00.
например. Запрос возвращает 30.00
Я назначаю это строке (string value = Convert.ToString(ReturnValue);
)
но когда я его выводю, он отображается как 30.0000
Можете ли вы посоветовать мне, где я ошибаюсь, и лучший способ приблизиться к этому?
Вы можете использовать строковые коды формата в своем вызове ToString.
MartGriff,
Мой лучший совет - преобразовать его в двойное, используя тип SqlMoney. Оттуда вы можете вывести его, как хотите!
Вот пример:
System.Data.SqlTypes.SqlMoney ReturnValue;
//Set your returnValue with your SQL statement
ReturnValue = ExecuteMySqlStatement();
//Get the format you want
//$30.00
string currencyFormat = ReturnValue.ToDouble().ToString("c");
//30.00
string otherFormat = ReturnValue.ToDouble().ToString("0.00");
Дополнительные параметры форматирования см. в MSDN:
http://msdn.microsoft.com/en-us/library/system.double.tostring.aspx
Желаем удачи, надеюсь, это поможет.
Вы хотите, чтобы ваша строка форматировалась с использованием символа валюты?
Если так...
decimal m = 3.4;
string s = string.Format("{0:c}", m);
// s will be £3.40, $3.40, etc depending on your locale settings
Я бы использовал что-то вроде
string value = ReturnValue.ToString("0.00");
Это использует перегрузку ToString, которая принимает строку формата. В приведенной выше строке формата "0.00" указаны два десятичных знака.
В настоящее время я разрабатываю веб-систему лодок, используя версию VS 2013 Community. Я пытался выяснить, как вывести значение валюты в текстовое поле.
Метод, который я использовал, был
fieldName.Text = decimalValue.ToString( "c" );
Он отлично работает.
Попробуйте следующее:
yourValueHere.ToString("0.00")
В SQLServer тип данных денег является эквивалентом десятичной дроби с 4 десятичными точками точности. Я бы предположил, что точность сохраняется, когда десятичная метка преобразуется в строку. Лучшим вариантом было бы всегда использовать строку формата, например "#, ## 0.00" при выполнении преобразования.
Тип данных "Деньги" имеет точность 4 знака после запятой. Вам нужно либо указать формат в аргументах ToString(), либо вы можете округлить значение до преобразования в строку.
Если вы используете .ToString(), вы не получаете округления, насколько я знаю. Я думаю, вы просто теряете цифры.
Если вы раунд, вы не просто рубите цифры. Здесь образец для округления (непроверенный код):
string value = Math.Round(ReturnValue, 2).ToString();