2012-03-29 43 views
0

我在C#中的對象上有一個小數。我希望能夠在值爲-1.61769時將它顯示爲xxxx.xxxx,基本上我想將最後兩位數字向上舍入並確保它在小數位後只有4個小數位。 ?林不知道這是否是一個數學運算(即Math.Round),或者是一個驗證操作(即的String.format)或兩者..如何確保小數始終顯示爲xxxx.xxxx正面和負面?

希望有人能幫助...

+4

應該如何-1.61769看你的 「XXXX.XXXX」 格式? -0001.6177? – 2012-03-29 11:03:37

回答

2

試試這個:

string result = d.ToString("0.0000"); 

您可能還需要指定一個文化:

CultureInfo cultureInfo = CultureInfo.InvariantCulture; 
string result = d.ToString("0.0000", cultureInfo); 

結果:

-1.6177 

看到它聯機工作:ideone

+0

http://www.csharp-examples.net/string-format-double/在格式化的其他等待中也給出了一些很好的例子。 – NominSim 2012-03-29 11:07:54

1

你必須檢查與的String.format如果你正在尋找有一個字符串。

檢查鏈接c# double format

,如果你正在尋找讓您應該使用Math.round

2

這取決於你是否要最多四個小數位,或exacty數的值小數點後四位。

如果四捨五入的價值,你得到最多四個小數位:

value = Math.Round(value, 4); 

的值,例如1.61799將被四捨五入到1.6180而顯示爲1.618

如果格式化的值,你得到完全四個小數位:

string formatted = value.ToString("0.0000"); 
+0

實際上,調用'Math.Round(value,4).ToString()'會得到正好四位小數。 「1.61799m」將被舍入爲「1.6180m」,並顯示爲「1.6180」(或「1,6180」,或可能是別的,取決於文化)。我認爲你在考慮雙打,但這個問題是關於小數。 – hvd 2012-03-29 11:14:43

+0

@ hvd:好點,但是不確定op是指「十進制」類型值還是十進制值。 – Guffa 2012-03-29 11:43:31

-1

你嘗試Math.Abs()? 根據此MSDN-Page這是不可能的。 因爲它會顯示一個不同的值。

Math.Abs(-1.61769).ToString("####.####");

+0

發表評論! – 2012-03-29 11:11:34

+0

這不會做作者想要的。他想把價值四捨五入,而不是它的絕對價值,它會得到負面的正面信號。 – 2012-03-29 14:45:34

+0

@Rhhound該問題要求「始終顯示爲xxxx.xxxx正面和負面」 - 如果x代表一個數字,則xxxx.xxxx中無法顯示符號。我認爲你是對的,這不是作者想要提出的問題,但這並不意味着要回答一個僅僅假設問題是正確的答案。 – hvd 2012-03-30 13:47:16