Matlab-小数点后的最大位数

Matlab-小数点后的最大位数,matlab,format,double,decimal,printf,Matlab,Format,Double,Decimal,Printf,必要时,我希望小数点后有max3位数字。Sprintf和format bank不提供我需要的。这些数字将出现在图形的文本框中 基本上是我尝试的: tt=2.4242 sprintf('.3f',tt) tt=2.424 这对于小数点后有3个或更多数字的数字来说是好的,但是如果我没有数字(对于数学爱好者来说:我的意思是小数点后有0个数字)或1个数字,那看起来就不太好了。例如: tt= 0 sprintf('%.3f', tt) tt=0.000 是否有此功能,或者我是否必须使用if或for 我

必要时,我希望小数点后有max3位数字。
Sprintf
format bank
不提供我需要的。这些数字将出现在图形的文本框中

基本上是我尝试的:

tt=2.4242
sprintf('.3f',tt)
tt=2.424

这对于小数点后有3个或更多数字的数字来说是好的,但是如果我没有数字(对于数学爱好者来说:我的意思是小数点后有0个数字)或1个数字,那看起来就不太好了。例如:

tt= 0 
sprintf('%.3f', tt)
tt=0.000
是否有此功能,或者我是否必须使用
if
for


我感谢你的帮助

尝试使用
g
格式说明符而不是
f

sprintf('%.4g', tt)
另见:(Give@RTL到期了,几天前我问了同样的问题,这就是我知道答案的原因)。

sprintf('.3f',tt)
之后,使用

  • 删除尾随零(如有)
  • 如果小数点后的所有数字都为零,则也删除小数点
即:

regexprep(sprintf('%.3f', tt), '(\.*0+)$', '')
示例:

>> tt = 4.1; regexprep(sprintf('%.3f', tt), '(\.*0+)$', '')
ans =
4.1

>> tt = 4; regexprep(sprintf('%.3f', tt), '(\.*0+)$', '')
ans =
4

尝试使用
g
说明符而不是
f
sprintf('%.4g',tt)
@公民精神错乱是的,这很有效!您可以输入它作为答案。这通常不起作用。示例:
sprintf('%.4g',56.1234)
@citizensane如何使它也适用于0?如果这个数字是0.5556,这没有任何作用。有什么想法吗?@LuisMendo真的!现在不知怎么搞糊涂了如何清楚地读取%[flags][width][.precision][length]说明符。对于g和g说明符:这是要打印的最大有效位数。无论如何
regexprep(sprintf(…)
=>simpler&general=>完美!绝对地这甚至适用于0。