Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中存储大于1*10^310的浮点数?_Python_Linear Algebra - Fatal编程技术网

如何在python中存储大于1*10^310的浮点数?

如何在python中存储大于1*10^310的浮点数?,python,linear-algebra,Python,Linear Algebra,我正在编写一个程序,输出一个大矩阵的条件数,所以我使用幂法来获得最大特征值,但值是大于1*10^310的大数字,最后值变为无穷大,我尝试了十进制模块,但结果是一样的。如何存储这些大的浮点值?或者另一种使用较短值的方法? 我不允许使用任何以Numpy形式显式帮助进程的模块,如果可以,请不要使用浮点值;它们很难推理,会咬你的 每当你尝试使用浮点,特别是那些有大量数字的浮点时,你应该考虑如何将它转换成整数范围,如果你的值的浮动部分超出了/P>>的无效或不必要的精度。 可能是一个更大的整数,比如10**

我正在编写一个程序,输出一个大矩阵的条件数,所以我使用幂法来获得最大特征值,但值是大于1*10^310的大数字,最后值变为无穷大,我尝试了十进制模块,但结果是一样的。如何存储这些大的浮点值?或者另一种使用较短值的方法?
我不允许使用任何以Numpy形式显式帮助进程的模块,如果可以,请不要使用浮点值;它们很难推理,会咬你的

每当你尝试使用浮点,特别是那些有大量数字的浮点时,你应该考虑如何将它转换成整数范围,如果你的值的浮动部分超出了/P>>的无效或不必要的精度。 可能是一个更大的整数,比如10**400或10**100000,这应该为浮点数字提供足够的空间,同时允许您在整数空间中工作 直接转换或缩小,丢弃数字超出小数点,考虑测量的准确度。 >>>int1.0*10*10**999稍后再除以10**690或以单位表示 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 >>>int1.0*10**10乘以10**300或以单位表示 10000000000 实际上,这就是为什么你需要科学记数法——如果你不需要的话,不要存储数据及其所有数字,保持你需要的最小数量,尺寸因子科学记数法的第二个乘法器使用浮点,但对于整数的想法是一样的

然后,当你完成数学运算时,你可以回忆起乘法器,甚至可以分别将它们相乘,而不是使用浮点运算

甚至可以以某种常规方式完全删除大部分数字,并在使用数据的人或任何人的后计算单位中显示系数

虽然这个问题是关于大的数字,甚至是十进制。但不幸的是,十进制并没有像人们所期望的那样处理小的浮点位,因为它们在存储方式上有一些别名

这对于普通的python浮点运算是有问题的,因此扩展到小数,甚至是您在正常使用中可能看到的大小

>>> 9007199254740993.0 9007199254740992 >>>十进制9007199254740993.0在十进制之前转换为浮点数的纸币 十进制'9007199254740992' 改编自

原问题的例子

>>>a=小数点10**310*小数点1.0 >>>b=小数点1 >>>a+b-a 十进制'0E+283' 进一步的例子

>>>a=小数点10**310 >>>b=小数点0.1 >>>a+b-a 十进制'0' >>>a 十进制'10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 >>>b 小数'0.10000000000000055115123125782702118158340451015625' >>> 10**-100 1e-100 >>>小数10**-100 十进制'1.0000000000000000 1999189980226883619647760788534159420182603005936595699255546767628861329298958274607481091185079852827053974965402268436041961263608356283141278717942724928942469086691630590004345786023014550794499855914387555798732080344984563589606359375E-100' >>> 10**-1000 0 >>>小数10**-1000 十进制'0' 您要使用十进制模块:

结果:

2.345E+1310

你在使用numpy吗?不,我没有使用任何模块十进制模块对我不起作用我想如果你在做线性代数类型的函数,numpy/scipy会比标准的有用lib@SamuelAxel在你的原始问题中,这是100%的关键信息,因为它显著地改变了可能的答案。@SamuelAxel-我的答案显然不是你想要的,因为我不是ab
您可以使用模块…还是可以使用十进制软件包?你说了两件相互矛盾的事情…你不能使用任何模块,十进制对你不起作用。如果你能用十进制,为什么它不适合你?顺便说一句,你应该把这些信息都放在你的问题里你为什么不给我们看看你的代码?我不知道你为什么要假设别人的代码需要什么样的准确性problem@anon01我不是说它们不需要那个精度,而是说它们不需要浮点值。相反,他们知道一些他们需要的准确性,他们应该能够将其转移到整数空间!在某些情况下,这可能是有用和适当的,但我完全不同意这是一项一般原则。为什么?可读性和错误!如果要对非常大的数字进行一系列实际操作,没有理由不使用decimal包。必须允许添加和删除额外的10次方幂,并确保在代码的多个级别上所做的事情是显而易见的,这简直是疯了。如果你说的是一般情况,那么你的方法要求你再次承受的所有痛苦的理由是什么?@anon01 NASA使用pi到15位数字来计算旅行者1号的位置在2英寸以内。在某一点上,你的精确度可能比你的准确度高得多。可观测宇宙的大小与普朗克长度之比约为10^61,因此不太可能有需要310位精度的数学问题。@Steve我补充了更多关于为什么在处理大浮点数和小数点时仍然要非常小心的内容!
2.345E+1310