2009-03-03 48 views
12

Tôi đang truy vấn một trường cơ sở dữ liệu trả về một giá trị tiền, tôi gán nó cho một chuỗi nhưng nó đang bổ sung thêm 00 vào cuối.C# Tiền tệ thành chuỗi

ví dụ: Truy vấn trả về 30.00

tôi gán này thành một chuỗi (string value = Convert.ToString(ReturnValue);) nhưng khi tôi ra nó, nó được hiển thị như 30.0000

Bạn có thể tư vấn cho tôi nơi tôi sẽ sai lầm và cách tốt nhất để tiếp cận này?

+0

Loại .NET của biến mà bạn đang lấy lại từ cơ sở dữ liệu của bạn (trước khi bạn chuyển đổi thành chuỗi) là gì? –

+0

OP có thể sử dụng các mã định dạng chuỗi, đó là những gì chúng có. –

Trả lời

1

Hãy thử điều này:

yourValueHere.ToString("0.00") 
3

Tôi muốn sử dụng cái gì đó như

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

này sử dụng quá tải ToString chấp nhận một chuỗi định dạng. Chuỗi định dạng trên "0,00" chỉ định hai chữ số thập phân.

6

Bạn có muốn chuỗi của mình được định dạng bằng ký tự tiền tệ không?

Nếu vậy ...

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

Cảm ơn, nó hoạt động tốt cho tôi ... –

0

Trong SQLServer một kiểu dữ liệu tiền là tương đương với một số thập phân với 4 chữ số thập phân chính xác. Tôi cho rằng đây là độ chính xác được bảo toàn khi số thập phân được chuyển thành một chuỗi. Tùy chọn tốt nhất là luôn sử dụng chuỗi định dạng, ví dụ: "#, ## 0,00" khi thực hiện chuyển đổi.

0

Loại dữ liệu tiền có độ chính xác là 4 chữ số thập phân. Bạn sẽ cần phải chỉ định định dạng trong các đối số ToString() hoặc bạn có thể làm tròn giá trị trước khi chuyển đổi thành một chuỗi.

Nếu bạn sử dụng. ToString() bạn không nhận được bất kỳ làm tròn nào theo như tôi biết. Tôi nghĩ bạn chỉ mất các chữ số.

Nếu bạn tròn, bạn không chỉ cắt nhỏ các chữ số. Dưới đây là một mẫu để làm tròn (mã chưa được kiểm tra):

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

MartGriff,

lời khuyên tốt nhất của tôi sẽ được chuyển nó sang một đôi sử dụng loại SqlMoney. Từ đó, bạn có thể xuất nó theo bất kỳ cách nào bạn muốn!

Dưới đây là một ví dụ:

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"); 

Đối với tùy chọn định dạng hơn, hãy kiểm tra MSDN:

http://msdn.microsoft.com/en-us/library/system.double.tostring.aspx

Best of luck, tôi hy vọng điều này sẽ giúp.

2

Tôi hiện đang phát triển một hệ thống web boatdock, sử dụng ấn bản Cộng đồng VS 2013. Tôi đã cố gắng tìm ra cách để tạo ra một giá trị tiền tệ vào một hộp văn bản.

Phương pháp tôi đã sử dụng là

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

Nó hoạt động hoàn hảo.

Các vấn đề liên quan