在 Julia 中创建一个大整数

Cm7*_*7Bb 4 julia

我正在学习 Julia,我想在 Julia 中创建一个只包含一个大整数的对象,例如 1100000。我可以做的是编写,n = 1.1e6但是这个对象的类型是Float64,如果我想将它用作的参数rand(),我收到一条错误消息,因为该对象不是整数。所以我所做的如下。

n = Int64(1.1e6)
rand(n)
Run Code Online (Sandbox Code Playgroud)

但似乎我正在更改此处变量的类型(从Float64Int64),据我所知,在 Julia 中应该避免这种情况。我当然可以使用,n = 1100000但在我看来,这是低效且难以阅读的。

我在这里改变变量的类型吗?如果是,这是更改变量类型的好方法,还是有更好的方法使用科学计数法创建整数而不必更改变量的类型?

任何帮助深表感谢!

Bog*_*ski 6

我会把它写成:

n = 1_100_000
Run Code Online (Sandbox Code Playgroud)

对我来说它比

n = Int(1.1e6)
Run Code Online (Sandbox Code Playgroud)

(甚至1.1e6)但当然它是主观的。

像 in 这样改变类型Int(1.1e6)在 Julia 中不是问题。只要传递的浮点数代表整数,它就会起作用(否则你会得到InexactError错误)。

  • 不,我的意思是“n = Int(1.1e6)”。你的理解是正确的。 (2认同)
  • 实际上,在函数内执行“x=1”,然后执行“x=1.0”,对于编译器来说只是一个小问题。即,它会有性能损失,但很小。原因是 Julia 编译器足够聪明,可以理解“x”可以有两种类型并针对这种情况进行优化。最大的问题是编译器是否必须假设“x”具有“Any”类型(因为这样它就无法针对这种情况优化代码执行)。话虽如此,正如您所说,最好不要更改性能敏感代码中绑定到某些变量的值的类型。 (2认同)