2013-09-27 196 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;'来尝试 –