cuốn sách gpt4 ai đã làm

InvariantCulture ToString trên đối tượng làm quá tải ToString bằng văn hóa

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 19:55:38 36 4
mua khóa gpt4 Nike

Đây là vấn đề của tôi, máy của tôi sử dụng văn hóa Pháp nên theo mặc định, nó phân tích cú pháp (3,141592) theo cách tiếng Pháp.

Nếu nền văn hóa máy không phải của Hoa Kỳ thì đây là mã để tái hiện vấn đề của tôi:

    số float = 4103.2680894812f;
Đối tượng numObj = số;
double val = Double.Parse(numObj.ToString(), CultureInfo.InvariantCulture);
System.Console.WriteLine(val.ToString(CultureInfo.InvariantCulture));

Thoạt nhìn, điều này có thể hoạt động, nhưng Float ToString bị quá tải và sử dụng văn hóa, vì vậy điều này thực sự không hoạt động.

Vấn đề là những gì thực sự được trả về cho tôi chỉ là một đối tượng, vì nó có thể là Chuỗi, Float, Double hoặc Int.

Giải pháp tạm thời là sử dụng GetType() và kiểm tra, nhưng tôi muốn biết liệu có giải pháp nào sạch hơn không.

câu trả lời hay nhất

Bạn có thể sử dụng cái này:

var currentCulture = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrenCulture = CultureInfo.InvariantCulture;
thử
{
chuỗi s = numObj.ToString();
}
finally
{
Thread.CurrentThread.CurrentCulture = currentCulture;
}

Hoặc, sử dụng cái này:

string s;
var formattable = numObj là IFormattable;
nếu (có thể định dạng != null)
{
s = formattable.ToString(null, CultureInfo.InvariantCulture);
}
khác
{
s = numObj.ToString();
}

Về c# - InvariantCulture ToString Trên các đối tượng làm quá tải ToString với văn hóa, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/34004542/

36 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress