decimal days;
 days = 1 / 5;
 days等于0,而不是0.2,这是为什么?
我把decimal 换成float,double都是0,我也没有什么int,为什么不是0.2?急呀

解决方案 »

  1.   

    days = (double)1 / 5;
      

  2.   

    1 / 5 是一个int的先给强转了
      

  3.   

    double i=new double();
    i=1/5;
    this.label1.Text=i.ToString();
    结果 0double i=new double();
    i=(double)1/5;
    this.label1.Text=i.ToString();
    结果0.2
      

  4.   

    double i=new double();
    i=1.0/5;
    this.label1.Text=i.ToString();
    结果 0.2lz可以放心了 哈
      

  5.   

    汗....看看自动转型方面的东西吧....int和int运算结果还是int
      

  6.   

    楼上们都说,在重复便吧
    1/5为整除,不会得出小数,分母或分子换一个为decimal或double型即可,也可以在表达式前面装换
      

  7.   

    1 / 5 是一个int的先给强转了正解啊
      

  8.   

    用这个/运算符得到的结果就是一个整数,所以当然不是浮点数了
    你可以这样:days = 1.0 / 5.0,就得到你想要的结果了,也就是0.2了,就说这些吧
      

  9.   

    khler(三人行,岂无师焉) ( ) 信誉:100    Blog   加为好友  2007-05-14 17:58:17  得分: 0  
     
     
       你遭遇潜规则了
      
     ^_^ 说的精到
      

  10.   

    decimal days;
     days = 1.0 / 5.0;
      

  11.   

    标准方法, 要加个类型说明符 m. 如:            decimal days;            days = 1 / 5m;            MessageBox.Show(days.ToString());
      

  12.   

    将1和5进行强制转换成decimal或者float就可以了
      

  13.   

    decimal days;
     days = 1.0 / 5;
      

  14.   

    print cast(1 as float)/5=0.2
      

  15.   

    刚才在vb中试了试  Debug.WriteLine(1 / 5) = 0.2
      Debug.WriteLine(1 \ 5) = 0
      

  16.   

    可以去我新开的blog.csdn.net/qdzhoujian看看,第1篇文章就是讲类型
    转换的
      

  17.   

    decimal days;
     days = (decimal)1 / (decimal)5;
      

  18.   

    double i=new double();
    i=1/5;
    this.label1.Text=i.ToString();
    结果 0double i=new double();
    i=(double)1/5;
    this.label1.Text=i.ToString();
    结果0.2
    这个是对的