一道题!

Assassin_ 骏图 开发组长/高级工程师/技术专家  2013-02-19 06:31:55
用户输入两个数字,计算两个数字的差值,每个数字不能超过1000位 .

.比如用户输入数字1为1 输入数字2位111111111111111111111111111111

那就是1-111111111111111111111111111111. 结果是-111111111111111111111111111110

问下 这中间类型如何转换? 数字2 明显超出int范围
...全文
213 11 点赞 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
catchdream 2013-02-20
引用 1 楼 gxingmin 的回复:
这个涉及到“大数”运算的问题,一般都是用字符串来拆分计算,给你一个例子你参考一下 10000的阶乘 10000的阶乘结果远超过int类型了
学习
  • 打赏
  • 举报
回复
Assassin_ 2013-02-19
引用 3 楼 hhddzz 的回复:
如果你只是想完成这个功能,可以使用.NET4.0引入的BigInteger类型(程序集:System.Numerics.dll;命名空间:System.Numerics) 如果你想知道怎么实现,搜索 大数运算 等关键词,网上有很多内容可以参考
引用 5 楼 hhddzz 的回复:
当然,BitInteger的源码就是一个参考
刚看了BitInteger. 确实能解决.谢谢!
  • 打赏
  • 举报
回复
dalmeeme 2013-02-19
计算时可以转换成stringbuilder,性能应该还行。
  • 打赏
  • 举报
回复
Assassin_ 2013-02-19
引用 6 楼 dalmeeme 的回复:
化成相同长度的字符串,然后由低位到高位相加减,注意“进位”。
这样性能岂不是消耗很大。
  • 打赏
  • 举报
回复
Assassin_ 2013-02-19
引用 3 楼 hhddzz 的回复:
如果你只是想完成这个功能,可以使用.NET4.0引入的BigInteger类型(程序集:System.Numerics.dll;命名空间:System.Numerics) 如果你想知道怎么实现,搜索 大数运算 等关键词,网上有很多内容可以参考
当然是想了解下原理。 我搜搜看。谢谢
  • 打赏
  • 举报
回复
dalmeeme 2013-02-19
化成相同长度的字符串,然后由低位到高位相加减,注意“进位”。
  • 打赏
  • 举报
回复
hhddzz 2013-02-19
当然,BitInteger的源码就是一个参考
  • 打赏
  • 举报
回复
enaking 2013-02-19
楼上正解.....
  • 打赏
  • 举报
回复
hhddzz 2013-02-19
如果你只是想完成这个功能,可以使用.NET4.0引入的BigInteger类型(程序集:System.Numerics.dll;命名空间:System.Numerics) 如果你想知道怎么实现,搜索 大数运算 等关键词,网上有很多内容可以参考
  • 打赏
  • 举报
回复
Assassin_ 2013-02-19
引用 1 楼 gxingmin 的回复:
这个涉及到“大数”运算的问题,一般都是用字符串来拆分计算,给你一个例子你参考一下 10000的阶乘 10000的阶乘结果远超过int类型了
谢谢 。我看看
  • 打赏
  • 举报
回复
gxingmin 2013-02-19
这个涉及到“大数”运算的问题,一般都是用字符串来拆分计算,给你一个例子你参考一下 10000的阶乘 10000的阶乘结果远超过int类型了
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2013-02-19 06:31
社区公告

让您成为最强悍的C#开发者