C# 从双精度值中删除尾随零

C# 从双精度值中删除尾随零,c#,regex,string,replace,double,C#,Regex,String,Replace,Double,我在试图实现的解决方案中遇到了一个问题,即我需要能够使用C从双精度值中删除尾随的零 例如,如果我创建了两个表示公式的对象,那么可以说这两个公式(2.0+7)和(2.000+7)是等价的。也就是说,(2.0+7)==(2.00000+7)。然而,我不确定最好的方法是什么。我在考虑正则表达式,但我不确定我是否能得到我想要的结果 在这种情况下,分辨率似乎存在问题。例如,两个公式2.0+7和2.000000001+7并不相同,但它们非常接近。所以我的问题是,正则表达式可以解释这一点吗?同样,正则表达式是

我在试图实现的解决方案中遇到了一个问题,即我需要能够使用
C
从双精度值中删除尾随的零

例如,如果我创建了两个表示公式的对象,那么可以说这两个公式(2.0+7)和(2.000+7)是等价的。也就是说,
(2.0+7)==(2.00000+7)
。然而,我不确定最好的方法是什么。我在考虑正则表达式,但我不确定我是否能得到我想要的结果

在这种情况下,
分辨率似乎存在问题。例如,两个公式2.0+7和2.000000001+7并不相同,但它们非常接近。所以我的问题是,正则表达式可以解释这一点吗?同样,正则表达式是最好的方法吗

经过更多的阐述,以下内容应该是合法的

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

公式
类中,有一个字段存储对
字符串列表
的引用。此列表必须包含相同的值才能使重写的“Equals”方法返回true。

您不需要RegExp,只需使用即可。

您不需要RegExp,只需使用即可。

尝试以下操作:

double num = 587.21500;
var res = Double.Parse(num.ToString("G29"));
试试这个:

double num = 587.21500;
var res = Double.Parse(num.ToString("G29"));
?


您使用哪种语言?为什么你认为正则表达式适合这个任务?使用您正在使用的语言中的适当API以这种方式格式化数字。比如小数点后1或2位左右。@RohitJain C#。我对正则表达式还不是很熟悉,但根据我的经验,在删除任何尾随零的同时确保分辨率似乎有点不平凡。我不能将双精度值保留在小数点后1或2位,因为我需要根据规范确保精度。你可以使用数学。舍入(数字,小数点)不,正则表达式不是检查一个浮点是否接近另一个浮点的最佳方法。最好从另一个数字中减去一个数字,然后验证此差值的绝对值是否小于一些任意的小值,如
0.000001
。C#中的双精度值没有尾随零,并且不以任何适用正则表达式的形式表示。对这类问题的标准回答是,你真的应该去阅读每一位计算机科学家都应该知道的关于浮点运算的知识,但最近我发现这是一个更好的问题介绍。你使用哪种语言?为什么你认为正则表达式适合这个任务?使用您正在使用的语言中的适当API以这种方式格式化数字。比如小数点后1或2位左右。@RohitJain C#。我对正则表达式还不是很熟悉,但根据我的经验,在删除任何尾随零的同时确保分辨率似乎有点不平凡。我不能将双精度值保留在小数点后1或2位,因为我需要根据规范确保精度。你可以使用数学。舍入(数字,小数点)不,正则表达式不是检查一个浮点是否接近另一个浮点的最佳方法。最好从另一个数字中减去一个数字,然后验证此差值的绝对值是否小于一些任意的小值,如
0.000001
。C#中的双精度值没有尾随零,并且不以任何适用正则表达式的形式表示。对这类问题的标准回答是,你真的应该去阅读每一位计算机科学家都应该知道的关于浮点运算的知识,但现在我发现这是一个更好的问题介绍。这将使小数四舍五入。使用
双变量=56.99911进行尝试这将舍入小数。使用
双变量=56.99911进行尝试