2015-11-04 52 views
0

我想將我的字符串值轉換爲int16,只顯示2個小數位。我已經嘗試了下面,但它會拋出一個錯誤,因爲我的字符串值實際上並未轉換?在C中轉換字符串#

namespace ConsoleApplication2 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     string number1 = "1234.00011"; 
     Console.Write(number1); 
     Console.WriteLine(); 
     string r = String.Format("{0:F2}", number1); 
     Console.Write(Convert.ToInt16(r)); 
    } 
    } 
} 

編輯

拋出錯誤是

Console.Write(Convert.ToInt16(r)); 

和錯誤是

型 'System.FormatException' 未處理的異常出現在mscorlib.dll線

附加信息:輸入字符串是否t格式正確。

+1

一個整數不會有任何小數位。究竟拋出什麼異常,以及在哪一行? –

+0

@MikeHofer看到我的編輯進一步。 –

回答

0

您致電string.Format的電話使用浮點格式說明符並提供字符串參數。這些是互不兼容的。因此,字符串參數將按原樣插入結果中,並存儲在r中,以便您不會得到所需的兩位數四捨五入。

你可能想要做的是這樣的:

static void Main(string[] args) 
    { 
     string number1 = "1234.00011"; 
     Console.Write(number1); 
     Console.WriteLine(); 
     var r1 = float.Parse(number1); 
     string r = String.Format("{0:F2}", r1); 
     Console.WriteLine(r); 
     Console.Write((int)r1); 
     Console.ReadKey(); 
    } 

在我的測試中,它產生以下輸出:

1234.00011 
1234.00 
1234 

注意,第二行有希望的舍入,因爲我們提供了一個浮點值string.Format,以便{0:F2}可以正常工作。第三行沒有小數位,因爲我們使用了直接轉換,並且不包含任何浮點數字。