2009-12-04 68 views
1

我需要格式化浮點值,而我只需要點後兩個數應該是圓角值浮點變量格式

float first = 7, Second = 3,result; 
result = first/Second; // result contain 2.33333325 since I need like 2.33 

感謝

回答

9
?5/3 
1.6666666666666667 
?String.Format("{0:0.00}", 5/3) 
"1,67" 
?System.Math.Round(5/3, 2) 
1.67 

?(5.0/3).ToString("0.00") 
"1,67" 
?(5/3).ToString("0.00") 
"1,00" 
?(5.0/3).ToString("E") //Exponential 
"1,666667E+000" 
?(5.0/3).ToString("F") //Fixed-point 
"1,67" 
?(5.0/3).ToString("N") //Number 
"1,67" 
?(5.0/3).ToString("C") //Currency 
"1,67 €" 
?(5.0/3).ToString("G") //General 
"1,66666666666667" 
?(5.0/3).ToString("R") //Round-trip 
"1,6666666666666667" 
?(5.0/3).ToString("this is it .") 
"this is it 2" 
?(5.0/3).ToString("this is it .0") 
"this is it 1,7" 
?(5.0/3).ToString("this is it .0##") 
"this is it 1,667" 
?(5.0/3).ToString("this is it #####") 
"this is it 2" 
?(5.0/3).ToString("this is it .###") 
"this is it 1,667" 
5

可以使用Math.Round圓的數量或指定它應該出現在輸出中使用格式說明符。如果您想對需要的值進行進一步計算,以決定是否需要舍入值或更準確的值。

對於格式說明符,您可以在這種情況下使用{0:f}。看到這個帖子的例子http://blog.stevex.net/string-formatting-in-csharp/

Console.WriteLine(String.Format("{0:f}", result)); 

正如本所指出的ToString接受相同的格式說明,因此,如果數量不是你可以做一個文本的一部分。

result.ToString("f"); 
+2

難道你不能只使用'result.ToString(「f」);'使用標準的數字格式字符串? http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx – 2009-12-04 11:27:00

+0

好點。我通常會使用String.Format來包含其他文本/數字。我已將您的評論添加到我的答案中。謝謝。 – 2009-12-04 12:13:31

2

布賴恩說,浮標只是作爲二進制數據存儲 - 它們不包含格式。當您將數字格式化爲字符串時,您可能只需要擔心這一點。

但是,如果您對涉及小數點的特定操作感興趣,您可能需要查看使用decimal而不是float開始。你在這裏工作的是什麼樣的號碼?

尤其是,如果您正在執行多項操作並希望在數字本身中進行取整,那麼那麼decimal可能是更好的選擇。有關更多信息,請參見我的關於binary floating pointdecimal floating point的文章。