一道题!

Assassin_ 2013-02-19 06:31:55
用户输入两个数字,计算两个数字的差值,每个数字不能超过1000位 .

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

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

问下 这中间类型如何转换? 数字2 明显超出int范围
...全文
283 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
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类型了

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧