CẬP NHẬT: Nhìn vào MSDN documentation on the System.Double
type, tôi thấy điều này:
Theo mặc định, giá trị đúp chứa 15 chữ số thập phân của độ chính xác, mặc dù tối đa 17 chữ số được duy trì nội bộ.
Vì vậy, tôi nghĩ pdr's on to something, thực sự. Chỉ cần làm điều này:
// As long as you've got at least 15 #s after the decimal point,
// you should be good.
value.ToString("#,#.###############");
Dưới đây là một ý tưởng:
static string Format(double value)
{
double wholePart = Math.Truncate(value);
double decimalPart = Math.Abs(value - wholePart);
return wholePart.ToString("N0") + decimalPart.ToString().TrimStart('0');
}
Ví dụ:
Console.WriteLine(Format(42023212.0092343234));
Output:
42,023,212.00923432409763336
Ha, vâng, như bạn có thể thấy, điều này cho kết quả không hoàn hảo, do (tôi nghĩ) với các vấn đề toán học dấu chấm động. Oh tốt; đó là một lựa chọn, anyway.
Nguồn
2010-07-22 18:18:44
Tốt nhất cho đến nay, nó hoạt động miễn là số thập phân không dài hơn số lượng của # ... Tôi đã hy vọng để tránh tùy chọn này, nhưng nếu cách duy nhất của nó ..... – NotDan
Cuộc gọi tốt. Tôi nói đây là câu trả lời hay nhất. –