gpt4 book ai didi

octave - 从单精度中减去 double 给我 0。不是我想要的

转载 作者:行者123 更新时间:2023-12-02 05:20:16 25 4
gpt4 key购买 nike

我正在尝试使用 Octave 检查与 sin(x) 相关的舍入误差,我得到这些数字:

>> single(sin(10))
ans = -0.544021129608154

>> sin(10)
ans = -0.544021110889370

>> (single(sin(10))) - (sin(10))
ans = 0

应该是:-1.8718784×10^-8

我输入:format long,但它仍然给我零,我不知道如何获得实际答案。

最佳答案

在单精度和 double 之间执行计算时,返回值将具有最低精度的类。这意味着当您这样做时

single (sin (10)) - sin (10)

你的结果将是单例。请注意,这对于不同整数类型之间的操作是相同的;你会得到精度较低的那个。这意味着在减法发生之前,您的 double 型也会转换为单精度型。

从其他答案来看,Matlab 似乎实际上是用 double 执行计算的。这很奇怪,因为 Matlab 也返回像 Octave 这样的单曲。它必须将单精度转换为 double ,以 double 执行计算,然后将其转换为单精度。不管怎样,我已经举报了Octave bug用于 Matlab 兼容性。

关于octave - 从单精度中减去 double 给我 0。不是我想要的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35213845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com