2015-09-14 35 views
-2

我有雙重變量,它的值是:double.ToString()在C#中返回錯誤值

double d = 0.000000000000056843418860808015; 

當我打印這個變量的打印錯誤。

d.ToString(); 

輸出: 「5.6843418860808E-14」

如何解決這個問題?

+1

請解釋一下什麼是 「錯」 與格式化值? – dasblinkenlight

+0

@dasblinkenlight對他來說這是「錯誤的」,因爲這不是OP期望的。 OP應該瞭解科學記數法:https://en.wikipedia.org/wiki/Scientific_notation。 – aloisdg

回答

2

那麼如果你想有一個輸出,而不需要格式化您的字符串指數表示:

d.toString("F25"); 

這會給你與多達25位小數「正確」的數量。

0,0000000000000568434188608

編輯:格式和轉換的完整列表,請here和快照對你來說是下方。

Original value: 1054.32179 

F:      1054.32 
F0:     1054 
F1:     1054.3 
F2:     1054.32 
F3:     1054.322 
0
 double d = 0.000000000000056843418860808015; 
     var str = d.ToString("G17"); 
     var value = str.Split('E')[0]; 
     var zeros = Int32.Parse(str.Split('E')[1]); 
     var outputString = ""; 
     zeros = Math.Abs(zeros); 
     var addstring = "0."; 
     for (var i = 0; i < zeros - 1; i++) 
     { 
      addstring += '0'; 
     } 
     value = value.Remove(1, 1); 
     value = addstring + value;