欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

C# 保留两位 "有效数字",而不是两位 "小数"。

最编程 2024-04-22 22:19:38
...

1.问题描述:

最近在处理软件结果显示时,发现如果利用 Math.Round(Number,N) 取N为小数时,有的结果不能显示完全

比如:15.3245 和 0.00106 两个数字,如果 N=2 ,保留下来是15.32 和 0.00,这显然不是我想要的结果。

我想要的结果是 15.32 和 0.0011(保留两位有效数字),怎么实现呢?

 

2.先科普一下有效位数:(百度百科)https://baike.baidu.com/item/%E6%9C%89%E6%95%88%E4%BD%8D%E6%95%B0/415981?fr=aladdin

 

3.思想:①找出小数点的位置;②从小数点往后数,找到第一个不为 0 的数所在位置;③根据要求,往后取所需位数即可。

 

4.实现:

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();
        }
    }

5. 最后说两句:检索了一下网上的方法,貌似可以用“正则表达式”实现,但是对于本菜鸟来说太难了,如果有大神知道,希望不吝赐教。

打完收工!

 

推荐阅读