<p>这是因为您的<code>test_data</code>不同:</p>
<p>Python:</p>
<pre><code>array([ 0.84147098, -0.29102733, 0.96323736, 0.75441021, -0.37291918,
0.85600145, 0.89676529, -0.34006519, -0.75811102, -0.99910501])
</code></pre>
<p>朱莉娅:</p>
<pre><code>[0.8414709848078965, -0.2910273263243299, 0.963237364649543, 0.7544102058854344,
-0.3729191776326039, 0.8560014512776061, 0.9841238290665676, 0.1665709194875013,
-0.7581110212957692, -0.9991050130774393]
</code></pre>
<p>发生这种情况的原因是您正在获取大量数据。例如,<code>t</code>中的最后一个数字是10,<code>exp(10^2)</code>是~2.7*10^43。在此比例下,浮点精度约为3*10^9。因此,如果Python和Julia的最低有效位都不同,那么<code>sin</code>值也会相差很远</p>
<p>事实上,我们可以检查初始数组<code>t</code>的底层二进制值。例如,它们在最后三个值上有所不同:</p>
<p>朱莉娅:</p>
<pre><code>julia> reinterpret(Int, range(0, stop=10, length=10)[end-2])
4620443017702830535
</code></pre>
<p>Python:</p>
<pre><code>>>> import struct
>>> s = struct.pack('>d', np.linspace(0,10,10)[-3])
>>> struct.unpack('>q', s)[0]
4620443017702830536
</code></pre>
<p>我们确实可以看到,他们的意见完全不同于一台机器。如果我们使用Julia,则取Python获得的值的<code>sin</code>:</p>
<pre><code>julia> sin(exp(reinterpret(Float64, 4620443017702830536)^2))
-0.3400651855865199
</code></pre>
<p>我们得到了与Python相同的值</p>