Matlab-小数点后的最大位数
必要时,我希望小数点后有max3位数字。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 我
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。