C# decimal类型为什么会出现尾随0 比如定义一个decimal的值为25.4 将他转换为string之后可以看到他的值为25.400000 后面出现一些0 出现0的个数也不一样 这是什么原因?

解决方案 »

  1.   

    ToString("0.0"),控制一下输出格式
      

  2.   

    decimal d = 25.4m;
    Response.Write(d.ToString());
    输出25.4 decimal d = 25.40000m;
    Response.Write(d.ToString());
    输出25.40000主要看decimal变量里装的数据的精度。
      

  3.   

    decimal a=new decimal(0.0);
    a的值是通过一些计算得到的 不是直接给赋值 比如a得到的值是11.5 将a转换为string类型
    string b=a.ToString();这个时候b的值就是11.50000 后面有几个0根据数值不同有所不同 
    int c=b.Length;c的值不是4 他包括了后面的0 肯定比4大  为什么会出现这样的情况?
    如果用Write输出的话就是11.5,因为Write是格式化输出  
      

  4.   

    decimal是实数行,
    实际是定长类型,类似于sqlserver里的 decimal(n,m)计算时,会自动添加小数位的,
    比如:            decimal a = decimal.Zero;
                a = 1.24m * 0.5m;
                string s = a.ToString();这时它会自动调整长度,长度为两个操作数小数位的和:
    第一个操作数 1.24 有2位,第二个操作数为1位,
    那结果为 2+1 = 3 位小数,以前学sqlserver时详细介绍过小数位的自动调整功能,
    但C#里隐含了这些技术细节,但底层机制是一样的,