3276880... is out of range for long(32bits)
You should use API to do such large op

解决方案 »

  1.   

    这样做:
    i64=i;
    i64=i64*j;
      

  2.   

    不是不支持,是因为long型数据的长度不够。
    这样做:
    i64=i;
    i64*=j;
      

  3.   

    long m_l1=10000000;
    long m_l2=327688;
    double a = m_l1;
    double b = m_l2;
    double dr = a*b;
    __int64 i64;
    i64 = floor(dr);
    if(dr - i64>0.5)
    i64 = i64+1;
    if(i64-dr>0.5)
    i64 = i64-1;
      

  4.   

    造成此問題的原因應該是i*j之后的結果轉入i64時中間值溢出所導致,所以解決的方法如下:
        __int64 i64;
        long i,j;
        i=10000000;
        j=327688;
        i64=i
        i64*=j;