如何在float中处理非常大的数字

拉胡尔·维尔玛

我试图将一个数字除以小浮点数,我得到了正确的结果,但是当我将此结果与另一个数字进行比较时,我显示了错误

temp_ans=7 / 0.00000000000000000000007
tt=1e+23
print tt,temp_ans,type(tt),type(temp_ans)
if tt==temp_ans:
    print "YES1"
if 1e+23==temp_ans:
    print "YES2"
if tt==1e+23:
    print "YES3"

output:
1e+23 1e+23 <type 'float'> <type 'float'>
YES3

expected output :
1e+23 1e+23 <type 'float'> <type 'float'>
YES1
YES2
YES3
克万图尔

虽然您的期望在我们人类的十进制思维方式中似乎完全合理,但对于计算机而言则不然。计算机认为二进制,并且只能记住这么多位。在撰写本文时,这很可能是 64 位,而 64 位不可能表示所有可能的数字。0.1 和 0.2 等数字无法准确表示,而 0.5 和 0.25 则可以。这同样适用于数字 0.00000000000000000000007。它不能使用IEEE-754 标准中的 64 位来表示

IEEE-754 表示法中最接近的二进制数 0.00000000000000000000007 是

s exponent e  significant
0 01110110101 0101001001111111110011011000000100000101110000000111

作为一个分数,记为

5954941421116423/85070591730234615865843651857942052864 = 5954941421116423 * 2^-126

您可以在 Python 中将其近似为:

>>> x=0.00000000000000000000007
>>> x.as_integer_ratio()
(5954941421116423, 85070591730234615865843651857942052864L)
>>> print("%104.103e" % (x))
6.9999999999999998699796799570811032833536179595168135385857706952383860965483108884654939174652099609375

因此,虽然您坚信 7/7E-23 等于 1E23,但您实际上计算的是不同的东西。您的计算机评估

 (7/5954941421116423) * 2^126 \approx 1.00000000000000001857433143470E23

有趣的朗读:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在python中处理非常大的文件?

来自分类Dev

处理非常大的数字

来自分类Dev

如何在C中输入非常大的数字(超过200个数字)?

来自分类Dev

如何在MATLAB中处理“非常大的图像文件”并找出最大的像素

来自分类Dev

如何在Smalltalk中制作非常大的文字?

来自分类Dev

如何在erlang中创建非常大的列表

来自分类Dev

如何在python中压缩非常大的文件

来自分类Dev

如何在numpy中输入非常大的数据?

来自分类Dev

如何在非常大的州使用Julia中的DeepQLearning?

来自分类Dev

如何在Android中处理非常大量的数据?

来自分类Dev

在C#中如何在没有bigint的情况下增加或减去非常大的数字?

来自分类Dev

Groovy 在处理非常大的数字时抛出 Numberformatexception

来自分类Dev

Java:如何将非常大的数字(十亿左右的数字)输出到文件中?

来自分类Dev

如何通过Apache POI在XLSX中写非常大的数字

来自分类Dev

如何计算非常大的数字并将其写入python中的文件?

来自分类Dev

在 Python 中准确地乘以非常大的数字

来自分类Dev

如何使用C#处理非常大的.xlsx文件

来自分类Dev

如何使用Tableau处理非常大的数据

来自分类Dev

如何处理非常大的交换文件

来自分类Dev

在Matlab中处理非常大且稀疏的矩阵

来自分类Dev

在hadoop中实时处理非常大的数据集

来自分类Dev

在PHP中处理大量非常大的文件

来自分类Dev

如何在Java中查找非常大的文件复制状态

来自分类Dev

JSON中的ID非常大,如何在不损失精度的情况下获取它

来自分类Dev

如何在clojure中打印一个非常大的数据结构?

来自分类Dev

如何在非常大的数据库中搜索多个字符串

来自分类Dev

如何在Python中对非常大的数据集执行有效的成员资格搜索

来自分类Dev

如何在非常大的python字典中获取随机值

来自分类Dev

如何在R中逐行匹配模式读取非常大的文件

Related 相关文章

  1. 1

    如何在python中处理非常大的文件?

  2. 2

    处理非常大的数字

  3. 3

    如何在C中输入非常大的数字(超过200个数字)?

  4. 4

    如何在MATLAB中处理“非常大的图像文件”并找出最大的像素

  5. 5

    如何在Smalltalk中制作非常大的文字?

  6. 6

    如何在erlang中创建非常大的列表

  7. 7

    如何在python中压缩非常大的文件

  8. 8

    如何在numpy中输入非常大的数据?

  9. 9

    如何在非常大的州使用Julia中的DeepQLearning?

  10. 10

    如何在Android中处理非常大量的数据?

  11. 11

    在C#中如何在没有bigint的情况下增加或减去非常大的数字?

  12. 12

    Groovy 在处理非常大的数字时抛出 Numberformatexception

  13. 13

    Java:如何将非常大的数字(十亿左右的数字)输出到文件中?

  14. 14

    如何通过Apache POI在XLSX中写非常大的数字

  15. 15

    如何计算非常大的数字并将其写入python中的文件?

  16. 16

    在 Python 中准确地乘以非常大的数字

  17. 17

    如何使用C#处理非常大的.xlsx文件

  18. 18

    如何使用Tableau处理非常大的数据

  19. 19

    如何处理非常大的交换文件

  20. 20

    在Matlab中处理非常大且稀疏的矩阵

  21. 21

    在hadoop中实时处理非常大的数据集

  22. 22

    在PHP中处理大量非常大的文件

  23. 23

    如何在Java中查找非常大的文件复制状态

  24. 24

    JSON中的ID非常大,如何在不损失精度的情况下获取它

  25. 25

    如何在clojure中打印一个非常大的数据结构?

  26. 26

    如何在非常大的数据库中搜索多个字符串

  27. 27

    如何在Python中对非常大的数据集执行有效的成员资格搜索

  28. 28

    如何在非常大的python字典中获取随机值

  29. 29

    如何在R中逐行匹配模式读取非常大的文件

热门标签

归档