从双精度值中删除尾随零

本文关键字:删除 双精度 | 更新日期: 2023-09-27 18:33:10

我在尝试实现的解决方案中遇到了一个问题,即我需要能够使用 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的引用。此列表必须包含相同的值,重写的"等于"方法才能返回 true。

从双精度值中删除尾随零

你不需要 RegExp,只需使用 Math.Round(Double, Int32(。

试试这个:

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