亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用適當的CultureInfo將字符串轉換為雙精度

如何使用適當的CultureInfo將字符串轉換為雙精度

繁星淼淼 2019-11-18 18:18:36
我在數據庫中有兩個nvarchar字段來存儲DataType和DefaultValue,并且我有一個DataType Double,其英文格式的值為65.89875?,F在,我希望用戶看到與所選瀏覽器語言格式對應的值(英語的65.89875應該顯示為德語的65,89875)。現在,如果用戶從德語格式編輯為65,89875(相當于英語65.89875),而其他用戶從英語瀏覽器查看,則為6589875。發生這種情況的原因是,在數據庫中,它以65,89875的形式存儲在nvarchar列中,并且當使用英語區域性進行轉換時,它變為6589875,因為它被認為,是德語的十進制運算符分隔符。如何使它適用于所有瀏覽器?
查看完整描述

3 回答

?
當年話下

TA貢獻1890條經驗 獲得超9個贊

您需要定義一個將用于存儲在數據庫中的數據的語言環境,正是出于此目的,存在不變的區域性。


在顯示時,將轉換為本機類型,然后針對用戶的區域性進行格式化。


例如顯示:


string fromDb = "123.56";

string display = double.Parse(fromDb, CultureInfo.InvariantCulture).ToString(userCulture);

儲藏:


string fromUser = "132,56";

double value;

// Probably want to use a more specific NumberStyles selection here.

if (!double.TryParse(fromUser, NumberStyles.Any, userCulture, out value)) {

  // Error...

}

string forDB = value.ToString(CultureInfo.InvariantCulture);

PS。幾乎不用說,使用具有與數據匹配的數據類型的列會更好(但有時適用傳統)。


查看完整回答
反對 回復 2019-11-18
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

您可以將UI文化更改為所需的任何內容,但是您應該像這樣更改數字分隔符:


CultureInfo info = new CultureInfo("fa-IR");

info.NumberFormat.NumberDecimalSeparator = ".";

Thread.CurrentThread.CurrentCulture = info;

Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;

這樣,您的字符串將像這樣轉換:“ 12.49”而不是“ 12,49”或“ 12/49”


查看完整回答
反對 回復 2019-11-18
  • 3 回答
  • 0 關注
  • 530 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號