如果我想要一個雙轉換爲串和回雙是完全匹配,我會使用類似:生產往返字符串小數類型
double d1 = 1/3.0;
string s = d1.ToString("R");
double d2 = double.Parse(s);
但是,「R」格式未定義爲十進制類型(您會得到一個「FormatException:格式說明符無效」)。
什麼是生成十進制類型的往返字符串的方法?
如果我想要一個雙轉換爲串和回雙是完全匹配,我會使用類似:生產往返字符串小數類型
double d1 = 1/3.0;
string s = d1.ToString("R");
double d2 = double.Parse(s);
但是,「R」格式未定義爲十進制類型(您會得到一個「FormatException:格式說明符無效」)。
什麼是生成十進制類型的往返字符串的方法?
Decimal
事實上是一個二進制十進制值(它使用的,不基地作爲Double
),這就是爲什麼沒有必要特別的確切表示喜歡ToString("R")
;
Decimal value = 123.456m;
String result = value.ToString(CultureInfo.InvariantCulture); // <- That's enough
還詳見:
如果你嘗試,
decimal d1 = 1m/3;
string s = d1.ToString();
decimal d2 = decimal.Parse(s);
// where d1 == d2 = true
你會看到你不需要任何額外的格式選項,以獲得正確的string
表示。
該代碼是有效的C#,並且(對於給定示例,至少)按預期/描述工作。我不知道現在的代碼是否是@musefan所看到的。 –
@TimS .:實際上,我錯過了整個'double' /'decimal'的東西......我的錯誤 – musefan
小數的字符串格式已經是小數的確切值。 **這是小數點**。 –