英文:
matlab fprintf with formatspec based on value
问题
对于第一个数字1.755,你可以使用以下代码来打印:
fprintf('%.3f', 1.755)
对于第二个数字1.234e-5,你可以使用以下代码来打印:
fprintf('%.3e', 1.234e-5)
在Matlab中,你可以使用不同的格式说明符(formatspec)来控制打印输出的格式。在这里,'%.3f' 和 '%.3e' 分别表示打印浮点数并保留3位小数,以及以科学计数法打印浮点数并保留3位小数。
关于是否能让Matlab自动推断最佳的格式说明符,通常需要根据需求自己来选择合适的格式说明符。如果需要自动确定最佳格式,可能需要编写一些自定义的代码来实现,而不是依赖内置的功能。
英文:
Say I want to print two numbers
1.755
1.234e-5
For the former, I would write
fprintf('%.3f', 1.755)
and for the latter
fprintf('%.3e', 1.234e-5)
Clearly, the first formatspec does not make sense for 1.234e-5 as it would be printed as 0.000
Is there a way to let matlab deduce an "optimal" best formatspec based on the value to be printed or must this be hardcoded by if-statements?
答案1
得分: 2
你可能想要使用%.4g
。格式规范%g
在文档中定义为
%e
或%f
中更紧凑的格式,没有尾随零(使用精度操作符来指定有效数字的数量。)
请注意,如上所示,使用%g
时指定的精度是指有效数字的数量(而不是小数点右边的数字数量,这与%f
或 %e
不同)。
英文:
You probably want %.4g
. The format specification %g
is defined in the documentation as
> The more compact of %e
or %f
, with no trailing zeros (Use a precision operator to specify the number of significant digits.)
Note that, as indicated, with %g
the specified precision refers to the number of significant digits (whereas with %f
or %e
it would be the amount of digits to the right of the decimal point).
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论