matlab - 在 Matlab 中,如何使用 formatSpec 格式化运算符指定指数中的位数?

标签 matlab printf precision exponent

我正在使用 Matlab 中的 fprintf 命令将数据写入输出文本文件。如何将一个数字写入输出文件,例如 1.12345678e-001指数为三位

formatSpec = '%1.8e\n';

给出 1.12345678e-01,不是想要的结果!

这里有一个类似的问题 https://se.mathworks.com/matlabcentral/answers/100772-how-do-i-use-fprintf-to-write-numbers-in-exponential-notation-of-variable-exponent-digits-on-a-windo

但是按照那里给出的说明并没有解决问题!

最佳答案

您可以使用这种非正则表达式方法:

num = 0.112345678
pow = floor(log10(abs(num)));
sprintf('%.8fe%+.3d', num/10^pow, pow)

ans =
1.12345678e-001

对于多个输入使用这个:

num= [.123 .456 .789];
pow = floor(log10(abs(num)));
sprintf('%.8fe%+.3d ', [num./10.^pow; pow])

关于matlab - 在 Matlab 中,如何使用 formatSpec 格式化运算符指定指数中的位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48401157/

相关文章:

c - 如何定义大于 16 字节的 float 据类型?

c - 函数返回 int 但出现奇怪的行为

c - printf 在格式字符串中添加一个\n

java - Nimbus 的 Matlab 外观和感觉

performance - “for”循环与 MATLAB 中的矢量化

c - 多个 printf/scanf 影响输出

tsql - T-SQL 十进制除法精度

c++ - 数值错误是否可重现?

c++ - 如何使用 128 个元素创建从 -3000 到 3000 的 vector

image - MATLAB - 将图像写入 eps 文件