2017-08-22 65 views
3

我有類似下面的值:如何忽略第一個小數點後的值第一個值如果是0否則如果大於0則取其值?

decimal val = 1.100; 

現在我所要做的是,如果我以後第一個小數點的值是0的話,我想只取1.1,而忽略休息,如果我有1.11的話,我想利用整個1.11

我這是怎麼想的做的事:

1)十進制轉換爲字符串。

2)按點分割字符串。

3)檢查長度是2,並且如果第二位置大於0,則取整等11,用於十進制值1.11否則如果小數是這樣1.10再取1.1否則取1.0的小數1.000

情況下樣品的輸入和輸出:

1.000 // output 1.0 
1.100 // output 1.1 
1.110 // output 1.11 
1.111 // output 1.111 
1.102 // output 1.102 

但是,這是骯髒的邏輯,我想avoid.Isnt有任何內置的方式或更好的方式來做到這一點?

注意:我不想做任何類型的聚會。

+0

如果值爲1.1045,該怎麼辦?你想在這個值 – Blue

+0

@藍我將只有3個小數位,所以它會是這樣的1.104,在這種情況下,我想採取1.104 –

回答

5

您可以使用custom numeric format string

val.ToString("0.0##") 
+0

是的,這工作。非常感謝你的努力,以幫助我,請你繼續像這樣:) –

+0

謝謝你的客氣話。 – Sefe

0

希望你喜歡這個邏輯。請試試這個。

double val = 1.002; 
    string output = !val.ToString().TrimEnd('0').Contains('.') ? string.Format("{0}.0", val) : val.ToString().TrimEnd('0'); 

如果值是1.00,那麼我的輸出將是1.0

然後你可以這個字符串轉換成其它數據類型。

相關問題