如何读入 “科学计数法”表示的超大巨型数?

boyyao 2016-10-19 07:22:53
需要读取一窜数。。已经超出doube的范围了。表示方法 是 1exp999 这种类型的。不知道。net有什么方法可以读取这种数并且做运算。
...全文
593 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Poopaye 2016-10-24
  • 打赏
  • 举报
回复
bcl里有个BigRational http://bcl.codeplex.com/
xuzuning 2016-10-24
  • 打赏
  • 举报
回复
BigInteger => Big Integer => 大的整数 当然就不会支持浮点数了 既然已是科学计数法表示了,那么你就弄一个结构,一个成员存储底数,一个成员存储指数 乘(除):底数乘(除),指数加(减) 加(减):化为同指数后,底数加(减) 存放的数据库时也是按底数、指数分开成两字段
boyyao 2016-10-23
  • 打赏
  • 举报
回复
ps ps ps 数据库中如何存储这种超大数?当字符串来存储么? 这样后期排序是不是不好解决?
boyyao 2016-10-23
  • 打赏
  • 举报
回复
另外,尝试了下BigInteger 和int一样是不支持浮点数据的。比如9.99 有简单的方法放弃小数部分的精度么? 我看见BigInteger.Parse 中有 iformatprovider 参数可以供选择。是否能解决科学计数法和浮点数的问题?
boyyao 2016-10-23
  • 打赏
  • 举报
回复
再次请教。BigInteger 能否直接读取 9.99E300 或者9.99exp999 这类形式的数据? 或者有什么简便的方法来让其读取这些类型的数据?
Forty2 2016-10-20
  • 打赏
  • 举报
回复
几种方法: 1、C++的boost库支持(Quad float)4精度浮点,大概可支持到10的4000次方。 优点:运算快 缺点:需要自己做一个C++ dll,然后通过pinvoke调用 2、使用任意大数计算,来模拟浮点运算 优点:C# 4.0有大数类,因此很容易实现。浮点数大小没有限制。 缺点:还是要自己写一些代码,比如输入解析和输出格式化。速度相对慢。 3、自己写代码,并参考boost代码或其他4精度浮点库。 优点:完全自己控制,效率也可以很高。 缺点:要自己写。 如果是计算不多,可以用第二种方法。计算本身不复杂: 假设a,b,c,d是整数(可以用BigInteger)。 高精度的浮点,都可以用分数表示; 分数可以表示为a/b, c/d的形式(自己的类里面,分别用BigInteger来存储分子和分母); 分数的四则运算很直接。
a/b + c/d = (ad + bc)/(bd)
a/b - c/d = (ad - bc)/(bd)
a/b * c/d = (ac)/(bd)
a/b / c/d = (ad)/(bc)
q107770540 2016-10-20
  • 打赏
  • 举报
回复
have you tried BigInteger?

110,536

社区成员

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

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

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