Matlab 根据数值进行的 formatspec 的 fprintf。

huangapple go评论89阅读模式
英文:

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).

huangapple
  • 本文由 发表于 2023年5月25日 00:59:08
  • 转载请务必保留本文链接:https://go.coder-hub.com/76325870.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定