2013-09-27 193 views
0

我試圖實現的解決方案中遇到問題,即我需要能夠使用C#從雙值中刪除尾隨零。從雙值中刪除尾隨零

例如,如果我正在創建兩個對象表示一個公式,這將是適當地說,這兩個公式(2.0 + 7)和(2.000 + 7)是等效。那就是,(2.0 + 7) == (2.00000 + 7)。但是,我不確定解決這個問題的最佳方式是什麼。我在想正則表達式,但我不確定我能得到我期待的結果。

在這種情況下,似乎會出現resolution的問題。舉例來說,兩個公式2.0 + 7和2.000000001 + 7並不相同,但它們非常接近。所以我的問題是,一個正則表達式可以解釋這個嗎?同樣,正則表達式是最好的方法嗎?

經過更詳細的闡述,以下內容應該是合法的。

Assert.IsTrue(new Formula("2.0 + x7").Equals(new Formula("2.000 + x7"))) 

Formula類有存儲參考串的List的字段。此列表必須包含相同的值才能使重寫的「Equals」方法返回true。

+1

你正在使用哪種語言?爲什麼你認爲正則表達式是適合這個的任務?使用您正在使用的語言的相應API以這種方式格式化數字。就像有1或2個小數位,左右。 –

+0

@RohitJain C#。我對正則表達式並不是很滿意,但是憑藉我的經驗,在確保解決方案的同時刪除任何尾隨的零似乎有點不重要。我不能將double值保留到1或2個小數位,因爲我需要通過spec來確保精度。 – Jonathan

+1

您可以使用Math.Round(數字,小數位數) –

回答

0

試試這個:

double num = 587.21500; 
var res = Double.Parse(num.ToString("G29")); 
0
double variable = 56.123456; 
string twoplaces = String.Format("{0:0.##}", variable); 

+0

這將舍入小數。用'double variable = 56.99911;'來嘗試 –