2011-12-24 54 views
2

我存儲各種不同的尺寸如在SQL服務器小數,如:格式小數用小數點後儘可能少的位數

10盎司,3.3盎司,100ml以下,1.75litres

當我拉這個數字作爲一個小數,做的ToString()我結束了太多額外的數字如

10.000,3.300,100.00,1.750

我要的是基本上是這樣:

decimal.Parse("1.7500").ToString().TrimEnd('0', '.') 

讓我1.7510

我似乎無法找出這個格式字符串。

在Visual Studio調試器,如果我做decimal.Parse("1.7500")它拿給我,1.75但是當我做ToString()變得1.7500

Decimal.Round(...)不好,因爲格式不固定。

+0

如果您的目標是.NET 4.0,本主題中的答案可能有所幫助:http://stackoverflow.com/questions/4298719/parse-decimal-and-filter-extra-0-on-the-right – keyboardP 2011-12-24 03:53:43

+0

謝謝@keyboardP - 嘗試搜索,但無法找到現有的答案。這一個也是不錯的:http://stackoverflow.com/questions/3104615/best-way-to-display-decimal-without-trailing-zeros-in-c-sharp – 2011-12-24 04:10:28

+0

如果你投到'浮動'並顯示'G'格式,它將刪除尾部的'0'。 – ja72 2011-12-24 04:20:32

回答

0
Regex.Replace(decimal.Parse("1.7500").ToString(),"^(0+)|(?<=\.\d+)(0+)$") 
+2

一個正則表達式看起來像是過度殺傷.... – 2011-12-24 04:12:36

1

這看起來有些奇怪,但它的工作:

var dec = 1.0004000m; 
var str = dec.ToString("0;#############################.#############################"); 

看來最好在這種情況下,採取自定義格式的優勢。

您可以隨時在ToString之外編寫擴展方法,這樣您就不必經常輸入所有#號。 '如果您需要數字分組,請在需要的地方插入適當的分組分隔符。

相關問題