在JAVA里  100000000*31 =-1194967296 ;在mysql里 100000000*31 就会 Mysql Out Of range value 了
JAVA中如果比较大的int类型的数相乘会出现负数的情况.有青年告诉我是溢出了。现在我想在mysql实现这种相乘能能的负的情况 应该怎么做?

解决方案 »

  1.   

    mysql中有bigint吗?换bigint试试吧!
      

  2.   


    您好,我是想实现得出负数的情况,bigInt算出来的是正数..很遗憾啊。
      

  3.   

    快点来人~随便说两句 给个建议也行呀。我想在mysql实现 JAVA中 hashcode的算法。 有高人嘛?
      

  4.   

    想了半天 感觉应该先找到JAVA里面那个溢出的算法吧?但是应该在哪找呢 ? 郁闷 
      

  5.   

    這個值應該是算出來以後再在int範圍內轉換的100000000*31 = 3100000000 = B8C63F00 = -1194967296
    因為符號位為1所以在java10進制形式中表現為負數但這種情況
    100000000*100000000 = 10000000000000000 = 2386F26FC10000
    它會去截斷在求值,但實際的計算實現jvm可能沒有將最終乘積求出,而可能在運算過程中就得到最終結果了。這樣應該效率更高,但不知道它到底是怎麼實現的