2012-04-17 88 views
1

可能重複:
Leave only two decimal places after the dot
Formatting a float to 2 decimal places修剪浮動

如果我有包括像153.2154879的浮動,有沒有辦法把它轉換爲字符串,但只顯示4位小數?我知道我可以使用"000.000"來格式化它,但前面的數字不一定總是3位數。那麼有沒有辦法顯示所有前面的數字(153),但只有字符串中的前4個字符?

+0

可能的重複:http://stackoverflow.com/q/1291483/962091 – zackdever 2012-04-17 18:10:05

回答

6

我通常使用像"#0.0000"這樣的格式字符串。

+0

所以'#'只是表示顯示所有的字符?從來不知道這個謝謝! – TheGateKeeper 2012-04-17 18:06:21

+0

-1。將一個float轉換爲字符串,然後返回float以僅僅將它舍入**無效。 – Aliostad 2012-04-17 18:28:28

+0

你爲什麼要在每個人面前低估一下Aliostad?我清楚地表明我想顯示4位小數,我從來沒有說過我想整理它並將其轉換回浮動狀態! – TheGateKeeper 2012-04-17 18:32:55

6

像這樣的東西應該做的:

your_number.ToString("0.####"); 

這將顯示小數點後4位A最大。

+0

'your_number.ToString(「0。####」)'會更有效率,並提供文化敏感的重載。 – phoog 2012-04-17 18:22:27

+0

-1。將一個float轉換爲字符串,然後返回float以僅僅將它舍入**無效。 – Aliostad 2012-04-17 18:28:33

+0

@Aliostad舍入和截斷是兩件不同的事情。格式化數字2最多4個小數位不是舍入。我更新了我的答案,以包含phoog建議的更「有效的方法」。 – Icarus 2012-04-17 18:40:30

4

您可以使用C#函數Math.Round函數。

float a= 153.213456; Math.Round(a,3); 這將數四捨五入到153.213 然後把它轉換爲字符串。

+0

字符串格式代碼將再次舍入數字;沒有理由先調用Math.Round。 – phoog 2012-04-17 18:23:21

+0

@phoog你的意思是你將浮點數轉換爲字符串,然後轉換回浮點數,而不是使用爲浮點數設計的圓? – Aliostad 2012-04-17 18:27:43

+0

@Aliostad當然不是!問題是關於*顯示*具有給定小數點數的浮點數,這意味着*將其轉換爲具有該小數點數的字符串*。我的意思是說*爲了顯示數字的格式而使用'Round'效率低下*如果要求在IEEE單一二進制格式中有一個四捨五入的「float」,爲了存儲或計算,當然你應該使用'Round'。 – phoog 2012-04-17 18:41:10