2009-03-03 3 views
12

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

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

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

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

+0

Что такое тип .NET переменной, которую вы возвращаете из своей базы данных (прежде чем преобразовать в строку)? –

+0

OP может использовать коды форматирования строк, для чего они предназначены. –

ответ

1

Попробуйте это:

yourValueHere.ToString("0.00") 
3

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

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

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

6

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

Если это так ...

decimal m = 3.4; 

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

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

спасибо, это отлично работает для меня ... –

0

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

0

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

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

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

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

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

удачи, я надеюсь, что это помогает.

2

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

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

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

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

Смежные вопросы