小编Dav*_*vid的帖子

Matlab单双转换错误

有人知道为什么double()在Matlab(R2016a)中使用单精度浮点数进行投射会改变最后的数字吗?这是一个例子:

format 'long'
x=3.2530601; %arbitrary single precision number
x_s=single(x);
x_d=double(x_s);
Run Code Online (Sandbox Code Playgroud)

如果我查看变量的类和值,我可以看到以下内容: x并且x_d是双倍的,x_s是预期的单个.价值观是:

x=3.253060100000000
x_s=3.2530601
x_d=3.253060102462769
Run Code Online (Sandbox Code Playgroud)

由于数字3.2530601可以表示为双精度浮点数或单精度浮点数,因此我不明白为什么xx_d不一样.他们远比x+eps(x).我想也许Matlab试图x_d通过有理分数近似来计算出双精度,但是调用rat(x,16)并没有给出相同的结果x_d.我很无能为力.有谁知道这里发生了什么?

floating-point precision double matlab casting

5
推荐指数
1
解决办法
416
查看次数

标签 统计

casting ×1

double ×1

floating-point ×1

matlab ×1

precision ×1