最近遇到问题是保留三位有效数字而不是保留三位小数。
例如:
输入:1234 输出:1234
1234.3 1234
12 12.0
4 4.00
1.3 1.30
1.235 1.24
1.245 1.24
0.001 0.00100
整理一下我找到的一些代码:
double是值,int是保留位数
1.
public double Retain(double d, int n)
{
if (d == 0.0) return 0;
if (d > 1 || d < -1)
n = n - (int)Math.Log10(Math.Abs(d)) - 1;
else
n = n + (int)Math.Log10(1.0 / Math.Abs(d));
if (n < 0)
{
d = (int)(d / Math.Pow(10, 0 - n)) * Math.Pow(10, 0 - n);
n = 0;
}
return Math.Round(d, n);
}
2.
用“G"的精度表示保留有效数字位数,例如保留4位
///保留4位有效数字
var arr = new double[] { 123.4567, 12345670, 12.34567, 0.001234567 };
forea