将地球上的原子分配给Julia中的变量

将地球上的原子分配给Julia中的变量,julia,Julia,在Python 3.6中,以下内容用于为变量指定地球中原子的估计值: In[6]: atoms_in_earth = 10**50 In[7]: atoms_in_earth Out[7]: 100000000000000000000000000000000000000000000000000 但是,以下内容在Julia 1.0.0中不起作用: julia> atoms_in_earth = 10^50 -5376172055173529600 julia> atoms_in_e

在Python 3.6中,以下内容用于为变量指定地球中原子的估计值:

In[6]: atoms_in_earth = 10**50
In[7]: atoms_in_earth
Out[7]: 100000000000000000000000000000000000000000000000000
但是,以下内容在Julia 1.0.0中不起作用:

julia> atoms_in_earth = 10^50
-5376172055173529600

julia> atoms_in_earth = BigInt(10^50)
-5376172055173529600

julia> atoms_in_earth = BigFloat(10^50)
-5.3761720551735296e+18

julia> atoms_in_earth = big(10^50)
-5376172055173529600

julia> atoms_in_earth = big"10^50"
ERROR: ArgumentError: invalid number format 10^50 for BigInt or BigFloat
Stacktrace:
 [1] top-level scope at none:0
我能够让这些方法发挥作用:

julia> atoms_in_earth = big"1_0000000000_0000000000_0000000000_0000000000_0000000000"
100000000000000000000000000000000000000000000000000

julia> float(ans)
1.0e+50

julia> atoms_in_earth = parse(BigInt, '1' * '0'^50)
100000000000000000000000000000000000000000000000000

julia> float(ans)
1.0e+50
我希望在朱莉娅身上有一个更容易做到这一点的方法

我遗漏了什么?

这是有效的:

julia> atoms_in_earth = big"1e50"
1.0e+50

julia> typeof(ans)
BigFloat
这项工作:

julia> atoms_in_earth = big"1e50"
1.0e+50

julia> typeof(ans)
BigFloat

Julia默认使用本机整数,这些整数可能会溢出。Python默认使用big整数(任意精度,其大小限制取决于可用内存量),并且不会溢出(但因此速度较慢)

对于
Int64
,您的第一个示例溢出:

julia> atoms_in_earth = 10^50
-5376172055173529600
在将第二、第三和第四个示例转换为BIG之前,它们已经溢出:

julia> atoms_in_earth = BigInt(10^50)
-5376172055173529600

julia> atoms_in_earth = BigFloat(10^50)
-5.3761720551735296e+18

julia> atoms_in_earth = big(10^50)
-5376172055173529600
您的第五个示例不是有效的大文本:

julia> atoms_in_earth = big"10^50"
ERROR: ArgumentError: invalid number format 10^50 for BigInt or BigFloat
但您可以创建一个小数字作为
BigInt
,在您的示例中为
10
,任何进一步的操作都将升级为big算术,形式如下:

julia> x = 10
10

julia> typeof(x)
Int64

julia> x = BigInt(10)
10

julia> typeof(x)
BigInt

julia> big(10) == big"10" == big(10)
true

julia> y = x^50
100000000000000000000000000000000000000000000000000

julia> typeof(y)
BigInt
在这种情况下,
50
在计算
x^50
之前也会被提升为
BigInt
,从而最终生成
BigInt

julia> BigInt(10)^50 == big"10"^50 == big(10)^50
true

Julia默认使用本机整数,这些整数可能会溢出。Python默认使用big整数(任意精度,其大小限制取决于可用内存量),并且不会溢出(但因此速度较慢)

对于
Int64
,您的第一个示例溢出:

julia> atoms_in_earth = 10^50
-5376172055173529600
在将第二、第三和第四个示例转换为BIG之前,它们已经溢出:

julia> atoms_in_earth = BigInt(10^50)
-5376172055173529600

julia> atoms_in_earth = BigFloat(10^50)
-5.3761720551735296e+18

julia> atoms_in_earth = big(10^50)
-5376172055173529600
您的第五个示例不是有效的大文本:

julia> atoms_in_earth = big"10^50"
ERROR: ArgumentError: invalid number format 10^50 for BigInt or BigFloat
但您可以创建一个小数字作为
BigInt
,在您的示例中为
10
,任何进一步的操作都将升级为big算术,形式如下:

julia> x = 10
10

julia> typeof(x)
Int64

julia> x = BigInt(10)
10

julia> typeof(x)
BigInt

julia> big(10) == big"10" == big(10)
true

julia> y = x^50
100000000000000000000000000000000000000000000000000

julia> typeof(y)
BigInt
在这种情况下,
50
在计算
x^50
之前也会被提升为
BigInt
,从而最终生成
BigInt

julia> BigInt(10)^50 == big"10"^50 == big(10)^50
true