问题描述
- 大数相乘有关位数的计算问题
-
如果两个大数在十位或者以下,计算结果正确,超过十位则计算错误,有时结果还会为负,这是什么情况
解决方案
Java可使用BigInteger、BigDecimal来操作
解决方案三:
数据溢出了。比如在C语言中,int类型的数据范围时-32768到32767,如果数据是32768,比32767大1,那数值就变成-32768了。
你用的是什么数据类型?10位乘以10位,那至少是20位以上的大数,你看看你那个数据类型最大值是多少?
解决方案四:
int64不够用,得换算法,16位 乘 16位,结果至少有32位数字啊,没法用一个数据类型表示,只能换算法。
int64的最大值:9223372036854775807
int64的最小值:-9223372036854775808
unsigned int64的最大值:18446744073709551615
请参考这个,这里有思路:http://blog.csdn.net/haisheng95/article/details/7649711
解决方案五:
要不你看看这个,这个将算法写的清清楚楚。C语言_大数四则运算
时间: 2024-09-06 17:13:56