2010-11-23 73 views
3

可能重複:
c# - How do I round a decimal value to 2 decimal places (for output on a page)如何正確舍入和格式化小數?

我試圖讓我的小數與四位小數顯示。數據庫將我的數字四捨五入到小數點後四位,但它返回尾數爲0的數字(由於字段的小數精度),因此類似於9.45670000。然後,當我這樣做:

string.Format("{0:#,#.####}", decimalValue); 

我在頁面上得到的輸出是9.4567,這正是我想要的。

但是,如果從數據庫返回的數字爲9.45600000,做格式化後的輸出爲9.456

但我需要顯示爲9.4560

如何格式化我的小數,使數小數位總是四位?

UPDATE:另外,如果我想動態確定小數位數,是否可以使用變量(而不是.0000)?

回答

13
string.Format("{0:N4}",decimalValue); 

Standard Numeric Format Strings

Custom Numeric Format Strings

要設置精度動態,你可以做到以下幾點:

double value = 9.4560000; 
int precision = 4; 
string format = String.Format("{{0:N{0}}}",precision); 
string valuestring = String.Format(format, value); 
+2

基於下面的評論,逗號也很重要,你。這個格式字符串正確地添加它們此外,我編輯了我的響應,以提供指向標準數字格式字符串的鏈接以供將來參考。 – theChrisKent 2010-11-23 17:52:11

1
string.Format({0:#,#0.0000}, decimalValue); 
1

使用String.Format -

decimal d =123.47 
    string specifier="{0:0,0.0000}"; // You need to get specifier dynamically here.. 
    String.Format(specifier, d);  // "123.4700" 
+0

我需要大數字的逗號,儘管... – Prabhu 2010-11-23 17:38:00

+1

已更新回覆。 – Vishal 2010-11-23 17:43:16

1

試試這個:

string.Format("{0:#,###.0000}", 9.45600000); 

添加零格式強制零輸出,如果沒有放有一個數字。

要使用驅動程序,你可以做到這一點零的數目加零:

int x = 5; 
    string fmt = "{0:#,###." + new string('0', x) + "}"; 
    string.Format(fmt, 9.456000000);