Подтвердить что ты не робот

С# Валюта в строку

Я запрашиваю поле базы данных, которое возвращает денежное значение, я назначаю это строке, но добавляет к ней 00.

например. Запрос возвращает 30.00

Я назначаю это строке (string value = Convert.ToString(ReturnValue);) но когда я его выводю, он отображается как 30.0000

Можете ли вы посоветовать мне, где я ошибаюсь, и лучший способ приблизиться к этому?

4b9b3361

Ответ 2

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

Желаем удачи, надеюсь, это поможет.

Ответ 3

Вы хотите, чтобы ваша строка форматировалась с использованием символа валюты?

Если так...

decimal m = 3.4;

string s = string.Format("{0:c}", m);

// s will be £3.40, $3.40, etc depending on your locale settings

Ответ 4

Я бы использовал что-то вроде

string value = ReturnValue.ToString("0.00");

Это использует перегрузку ToString, которая принимает строку формата. В приведенной выше строке формата "0.00" указаны два десятичных знака.

Ответ 5

В настоящее время я разрабатываю веб-систему лодок, используя версию VS 2013 Community. Я пытался выяснить, как вывести значение валюты в текстовое поле.

Метод, который я использовал, был

fieldName.Text = decimalValue.ToString( "c" );

Он отлично работает.

Ответ 6

Попробуйте следующее:

yourValueHere.ToString("0.00")

Ответ 7

В SQLServer тип данных денег является эквивалентом десятичной дроби с 4 десятичными точками точности. Я бы предположил, что точность сохраняется, когда десятичная метка преобразуется в строку. Лучшим вариантом было бы всегда использовать строку формата, например "#, ## 0.00" при выполнении преобразования.

Ответ 8

Тип данных "Деньги" имеет точность 4 знака после запятой. Вам нужно либо указать формат в аргументах ToString(), либо вы можете округлить значение до преобразования в строку.

Если вы используете .ToString(), вы не получаете округления, насколько я знаю. Я думаю, вы просто теряете цифры.

Если вы раунд, вы не просто рубите цифры. Здесь образец для округления (непроверенный код):

string value = Math.Round(ReturnValue, 2).ToString();