为啥matlab中的ncread函数会减少浮点数? [复制]

Posted

技术标签:

【中文标题】为啥matlab中的ncread函数会减少浮点数? [复制]【英文标题】:why ncread function in matlab reduce floating point numbers count? [duplicate]为什么matlab中的ncread函数会减少浮点数? [复制] 【发布时间】:2017-11-10 17:17:11 【问题描述】:

我在 matlab 中有以下代码:

converted = ncread(this_file, 'U');
disp(converted(50,10,20));

结果是:

-0.1561

实际上这个数字是 -0.15617890 但这段代码改变了浮点数的数量。为什么?

【问题讨论】:

【参考方案1】:

默认情况下,MATLAB 仅显示小数点后 4 位。您可以使用format 显示更多位数:

format long
converted = ncread(this_file, 'U');
disp(converted(50,10,20));

【讨论】:

在下一阶段我使用 csvwrite([test,'.txt'],converted);功能和同样的问题(我的数字较短):(请帮助我 @SiamakFarsi csvwrite 最多写入五个有效数字。如果你需要更高的精度,你应该使用dlmwrite 代替:dlmwrite([test,'.txt'],converted,'precision',8); dlmwrite dident 工作:(。仍然是相同的输出。csvwrite 和 dlmwrite 在浮动部分都有 7 位数字 @SiamakFarsi 尝试使用 '%.8f' 而不是 8 作为最后一个参数,以明确设置 8 位小数而不是 8 位有效数字(或增加值;使用 9 或更高)。 oh tnxxx gooooooood bless you my angel @frslm

以上是关于为啥matlab中的ncread函数会减少浮点数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Python 3 字符串函数似乎会降低浮点数的精度?

在 Matlab 中对浮点数进行位修改

matlab 为啥要进行数据类型转换?

使用 fprintf 函数在 matlab 中格式化浮点数

浮点数比较为啥没有相等的函数

为啥整数除以零 1/0 会出错但浮点数 1/0.0 返回“Inf”?