回 帖 发 新 帖 刷新版面

主题:System.Math.Roud 的用法疑惑

测试代码:vs2005
          {
            double a = 3.9999999999;
            double b = 4.149;
            double c = 5;
            a = System.Math.Round(a, 2);
            b=System.Math.Round(b,2);
            c=System.Math.Round(c,2);
           }
    结果:  a=4.0
            b=4.15
            c=5.0

    为什么不是:a=4.00
                b=4.15
                c=5.00

请高手指点[em14]

回复列表 (共2个回复)

沙发

你是不是直接用Console.WriteLine(a)类似这样的方法输出的?

Math.Round等处理函数仅仅是进行数学上的修剪,但是0.1和0.10以及0.100对于计算机来说意义都是一样的。

所以直接输出会按照默认最小输出位来进行。4.0多一个代表它是浮点数而非整数。

建议使用String.Format等函数处理之后输出

板凳


  谢谢大虾。原来是这样,明白了。我还以为是round有问题呢。看来要精确的保留书写格式上的有效数字还得用format啊。[em2]

我来回复

您尚未登录,请登录后再回复。点此登录或注册