zoukankan      html  css  js  c++  java
  • C# Math.Round()的银行家算法

    c# 中 Math.Round(2.5) 运行结果是2 你敢相信吗?

    上源码:

     public static void Cs4()
            {
    
                // 输出内容到控制台
                Console.WriteLine("请输入第一个字符串:");
    
                // 接收用户输入,为变量赋值
                string firstStr = Console.ReadLine();
    
    
                while (true)
                {
                    string str = Console.ReadLine();
    
                    if (string.IsNullOrEmpty(str))
                    {
                        continue;
                    }
    
                    string fpje = Math.Round(double.Parse(str), 0, MidpointRounding.AwayFromZero).ToString();
    
                    string fpje1 = Math.Round(double.Parse(str)).ToString();
    
                    Console.WriteLine("有枚举------" + fpje);
                    Console.WriteLine("无枚举------" + fpje1);
    
                }
            }

    运行结果

     上面情况是真实存在的  也就是所谓的Math.Round()的银行家算法;

    具体介绍参考:https://www.cnblogs.com/war-hzl/p/10984954.html

    自我理解 在运行Math.Round()函数时 保留位数后面一位是5的时候有两种不同情况:

    (1) 保留位数最后一位是偶数:直接舍去,保留位数最后一位不会+1

    (2)保留位数最后一位是奇数:会执行四舍五入的规则

    为了避免这种情况使得层序数据异常 解决方法如下:

    .NET 2.0 开始,Math.Round 方法提供了一个枚举选项 MidpointRounding.AwayFromZero 可以用来实现传统意义上的"四舍五入"

    列: Math.Round(double.Parse(str), 0, MidpointRounding.AwayFromZero)

  • 相关阅读:
    Arraylist和Linkedlist的区别
    list和map的区别
    collection和collections区别
    Linux操作命令(六)
    Linux操作命令(五)
    Linux操作命令(四)
    Linux操作命令(三)
    Linux操作命令(二)
    Linux操作命令(一)
    ProgrammingProjectList-文本操作
  • 原文地址:https://www.cnblogs.com/pyf97/p/14138243.html
Copyright © 2011-2022 走看看