1.问题描述:
最近在处理软件结果显示时,发现如果利用 Math.Round(Number,N) 取N为小数时,有的结果不能显示完全
比如:15.3245 和 0.00106 两个数字,如果 N=2 ,保留下来是15.32 和 0.00,这显然不是我想要的结果。
我想要的结果是 15.32 和 0.0011(保留两位有效数字),怎么实现呢?
- class Program
{
static void Main(string[] args)
{
double DNumber=105.04056789; //给定数字
int EffectiveCount = 2; //保留有效数字位数
string SNumber = DNumber.ToString();
char[] CNumberArr = SNumber.ToCharArray();
int DotIndex = SNumber.IndexOf('.'); //不知道怎么索引“double”类型,选择了一个笨方法
double Value = 0 ; //输出值
int TempPrecision = 0; //记录小数点后,第一个不为 0 的位置
for (int i = DotIndex+1; i < SNumber.Length; i++)
{
TempPrecision++;
if (CNumberArr[i] != '0')
{
Value = Math.Round(DNumber, TempPrecision + EffectiveCount-1);
break;
}
}
Console.WriteLine(Value);
Console.ReadKey();
}
}